Я хочу, чтобы моя страница ошибки моего приложения шва перенаправлялась на домашнюю страницу, если на экране нет сообщения об ошибке (например, если пользователь закладок страницы с ошибкой).Переадресация с страницы с ошибкой при отсутствии ошибок для отображения
У меня есть ряд правил в pages.xml, что сразу к странице ошибки, как это:
<!-- pages.xml -->
<exception class="org.jboss.seam.framework.EntityNotFoundException"
log-level="warn">
<redirect view-id="/error.xhtml">
<message severity="warn">#{messages['jsf.RecordNotFound']}</message>
</redirect>
</exception>
После попытки несколько неудачных выражений EL попытаться проверить какие-либо сообщений, я добавил подкладочный боб в выполните проверку:
<!-- pages.xml -->
<page view-id="/error.xhtml">
<action execute="#{facesMessagesUtil.getGlobalMessagesCount()}" />
<navigation>
<rule if-outcome="none">
<redirect view-id="/home.xhtml"/>
</rule>
</navigation>
</page>
.
//FacesMessagesUtil.java
import javax.faces.context.FacesContext;
import org.jboss.seam.faces.FacesMessages;
...
public String getGlobalMessagesCount()
{
log.info("currently {0} global facesMessages (seam)", FacesMessages.instance().getCurrentGlobalMessages().size());
log.info("found messages in faces context: {0}", FacesContext.getCurrentInstance().getMessages().hasNext());
log.info("got maximum severity: {0}", FacesContext.getCurrentInstance().getMaximumSeverity());
if (!FacesContext.getCurrentInstance().getMessages().hasNext())
{
return "none";
}
return "some";
}
выше метод вызывается, когда я вручную генерировать ошибку, но это перенаправляет на главную и показывает сообщение об ошибке там. Сообщения журнала сообщают, что классы я использую, кажется, не имеют какой-либо видимости сообщения, что отображается:
16:41:41,908 INFO [FacesMessagesUtil] currently 0 global facesMessages (seam)
16:41:41,908 INFO [FacesMessagesUtil] found messages in faces context: false
16:41:41,908 INFO [FacesMessagesUtil] got maximum severity: null
- Есть ли класс в шов 2, который позволит мне, чтобы проверить, есть сообщения?
- Есть ли выражение EL, которое может выполнить эту проверку без дополнительного компонента?
JSF 1.x или 2.x? – BalusC
Я считаю, что работаю с JSF 1.1, предоставленным JBoss (EWP 5.1.2) –