Domanda

Mi stavo solo chiedendo di implementare un tipo di visualizzazione del registro all'utente in cui in tutti i messaggi nell'applicazione vengono visualizzati per utente tutto il tempo.

Dal momento che uso JSF 1.2 e RF 3.3.3, volevo sapere se è possibile salvare tutti i messaggi aggiungere da diverse richieste e visualizzarli all'utente, in modo che l'utente conosca la storia delle azioni che ha fatto.È anche utile per il team di supporto analizzare la causa del problema e può inviare i messaggi allo sviluppatore se ha bisogno di simulato o per fare il debug degli scopi anche.

Conosco anche che FacesMessage venga cancellato su diverse richieste, è in cui la mia domanda è, per salvare i messaggi su richieste diverse :)

potrebbe essere gestito in diversi modi salvandoli è una variabile di sessione o così ... apprezzerei tutte le possibili risposte

È stato utile?

Soluzione

È possibile raccogliere tutti i messaggi durante la risposta di rendering in PhaseListener .Ad esempio.

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.
    }

}
.

Per farla funzionare, registrarlo come segue in faces-config.xml:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top