Pregunta

Me estaba preguntando implementar un tipo de pantalla de registro al usuario donde en todos los mensajes en la aplicación se muestran al usuario todo el tiempo.

Dado que utilizo JSF 1.2 y RF 3.3.3, quería saber si es posible guardar todos los mensajes, se agregarán por diferentes solicitudes y mostrarlos al usuario, para que el usuario conozca la historia de las acciones que ha hecho.También es útil para el equipo de apoyo para analizar la causa del problema y puede enviar los mensajes al desarrollador si necesita simular o depurar para proponer también.

También sé que los mensajes de Facesages se aclaran sobre diferentes solicitudes, así es donde se encuentra mi pregunta, para guardar mensajes sobre diferentes solicitudes :)

podría manejarse de diferentes maneras al guardarlos es una variable de sesión o así ... Apreciaría todas las respuestas posibles

¿Fue útil?

Solución

Puede recopilar todos los mensajes durante la respuesta de renderización en un PhaseListener .E.g.

public class MessagesListener implements PhaseListener {

    @Override
    public PhaseId getPhaseId() {
        return PhaseId.RENDER_RESPONSE;
    }

    @Override
    public void beforePhase(PhaseEvent event) {
        FacesContext context = event.getFacesContext();
        Iterator<String> clientIds = context.getClientIdsWithMessages();

        while (clientIds.hasNext()) {
            String clientId = clientIds.next();
            Iterator<FacesMessage> messages = context.getMessages(clientId);

            while (messages.hasNext()) {
                FacesMessage message = messages.next();
                save(clientId, message); // Do your job here.
            }
        }
    }

    @Override
    public void afterPhase(PhaseEvent event) {
        // NOOP.
    }

}

Para ejecutarlo, regístrate de la siguiente manera en faces-config.xml:

<lifecycle>
    <phase-listener>com.example.MessagesListener</phase-listener>
</lifecycle>

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top