2011-06-17 96 views
0

我有一個servlet過濾器,用於控制我的web應用程序是否正常啓動;處理jsf中的異常消息

public void doFilter(ServletRequest aReq, ServletResponse aResponse, FilterChain aChain) throws IOException, ServletException 
    { 
     HttpServletRequest request = (HttpServletRequest) aReq; 
     HttpServletResponse response = (HttpServletResponse) aResponse; 


     if(!myContext.isSystemReady()) 
     { 
      // SHOW AN ERROR PAGE WITH SOME EXCEPTION MESSAGE 
     } 

     aChain.doFilter(request, aResponse); 
     return; 

    } 

什麼是以這種風格顯示錯誤信息的最佳方式?

  • 如果我使用

    了request.setAttribute( 「errMsj」, 「系統未準備好,請聯繫您的網絡管理員。」);

我該如何顯示它在我的jsf頁面?

ERROR !<br /> 
detailed message is: <h:outputText value="errMsj HERE!"></h:outputText> 
  • 或者我應該使用ststusbean顯示錯誤消息?在這個時候,我應該訪問過濾器中的facescontext並將錯誤消息寫入該bean。可能會有問題嗎?

  • 還是更好的點子?

(使用JSF2.0)

回答

1

您可以通過在你的web.xml定義web-app/error-page元素重定向到一個特定的錯誤頁面:

<error-page> 
    <error-code>500</error-code> 
    <location>/error.xhtml</location> 
</error-page> 

檢查schema,還有更多的功能(像對特定的異常類反應一樣)。

我的peronally,我只是拋出一個異常在doFilter(有完整的異常堆棧跟蹤可能至關重要)。 如果您希望錯誤頁面是JSF頁面,則以後可以將該異常檢索爲#{requestScope['javax.servlet.error.exception']}

+0

謝謝lexicore,這很有幫助。 – asyard 2011-06-17 07:42:03

相關問題