У меня есть то, что, как я полагаю, является общей проблемой: у некоторых управляемых bean-компонентов есть действие, которое добавляет некоторые сообщения в контекст:
FacesMessage fm = new FacesMessage("didn't work");
fm.setSeverity(FacesMessage.SEVERITY_ERROR);
FacesContext.getCurrentInstance().addMessage(null, fm);
return "some-outcome";
Затем я отображаю результат в faces-config.xml
и настраиваю его на
<navigation-case>
<from-outcome>some-outcome</from-outcome>
<to-view-id>/view.xhtml</to-view-id>
<redirect/>
</navigation-case>
В view.xhtml
я представляю message:
<h:message globalsOnly="true" />
Однако это не работает, потому что сообщение теряется при выполнении перенаправления.
Как я могу это решить? Я нашел этот удивительный пост , в котором объясняется, как это сделать с помощью PhaseListener
, но я считаю, что эта ситуация слишком распространена, чтобы ее нужно было решать таким образом. Я ошибся? Следует ли мне создать PhaseListener
? Или есть какие-то другие стандартные решения?