2012-10-15 54 views
0

我正在學習struts2應用程序開發,感謝一些幫助實現自定義404頁面。 在我的應用程序,如何在Struts2中實現自定義404頁面

web.xml中有以下幾點:

<error-page> 
    <error-code>404</error-code> 
    <location>/jsp/pub/error404.jsp</location> 
</error-page> 

struts.xml的有:

<package name="actions-default" extends="struts-default"> 

    <global-results> 
     <result name="exception">/jsp/pub/exception.jsp</result> 
    </global-results> 

    <global-exception-mappings> 
     <exception-mapping exception="java.lang.Exception" 
      result="exception" /> 
     <exception-mapping exception="java.lang.RuntimeException" 
      result="exception" /> 
    </global-exception-mappings> 

</package> 

此外,在struts.xml中DEVMODE設置爲false

<constant name="struts.devMode" value="false" /> 

error404.jsp:Please click here to see the jsp source at jsfiddle

問題:

當我打申請網址無效或未映射的動作,我看到下面的消息,而不是我的自定義的404頁

"HTTP Status 404 - There is no Action mapped for namespace [/] and action name [invalidurl] associated with context path" 

在應用程序控制臺,我看到以下內容:

嚴重:異常處理ErrorPage [errorCode = 404,位置=/jsp/pub/error404.jsp] org.apache.jasper.JasperException:處理第6行的JSP頁面/jsp/pub/error404.jsp時發生異常

6: <s:url value='/' var="contextPrefix" /> 

如果我刪除所有的「S」標記,使error404.jsp爲純jsp頁面,然後我可以看到自定義404頁。我在哪裏做錯了?任何幫助解決這個問題都會有很大的幫助。

在此先感謝

小號

回答

0

大多數S2 JSP標籤期望在S2請求的上下文中運行。直接引用JSP繞過了S2請求過程,因此沒有價值堆棧,所以大多數標籤都會中斷。