您可以在PhaseListener
. 例如
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.
}
}
要让它运行,请在以下位置注册它faces-config.xml
:
<lifecycle>
<phase-listener>com.example.MessagesListener</phase-listener>
</lifecycle>