Слушатель FacesMessage - PullRequest
       8

Слушатель FacesMessage

1 голос
/ 07 декабря 2011

Как отлаживать сообщения JSF. Могу ли я реализовать некоторый слушатель и перехватить все сообщения об ошибках, которые JSF собирается отобразить?

1 Ответ

6 голосов
/ 07 декабря 2011

Вы можете с помощью крюка PhaseListener на beforePhase() из PhaseId.RENDER_RESPONSE.

Например

public class MessagesListener implements PhaseListener {

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

    @Override
    public void beforePhase(PhaseEvent event) {
        Iterator<FacesMessage> messageIterator = event.getFacesContext().getMessages();

        while (messageIterator.hasNext()) {
            FacesMessage message = messageIterator.next();
            // ...
        }
    }

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

}

Чтобы запустить его, зарегистрируйте его в faces-config.xml следующим образом:

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