0
如果沒有顯示錯誤消息(例如,如果用戶書籤錯誤頁面),我希望我的seam應用程序的錯誤頁面重定向到主頁面。當沒有錯誤顯示時從錯誤頁面重定向
我有一些在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表達式來嘗試檢查沒有消息後,我增加了一個輔助bean做檢查:
<!-- 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表達式可以在沒有額外的bean的情況下執行此檢查?
JSF 1.x or 2.x? – BalusC 2012-02-15 12:37:20
我相信我正在使用JBoss提供的JSF 1.1(EWP 5.1.2) – 2012-02-16 02:16:46