2012-04-19 137 views
0

我想在引發異常時顯示包含自定義消息的自定義頁面。 爲此,我正在這樣做。異常消息

Action類:

catch(OrbytTvException e) { 
    result=NONE; 
    Error err=new Error(); 
    err.setErrMsg("Exception Occured"); 
    log.info(err.getErrMsg()); 
    request.setAttribute("error", err); 
} 

的struts.xml:

<result name="none">/WEB-INF/pages/error.jsp</result> 

錯誤----這是一個bean包含ERRMSG財產。

當在這裏提出異常時,我正在爲該屬性設置一個值。

error.jsp文件:

<s:bean name="com.sits.itv.util.Error" var="errorBean" /> 
    <s:property value="#errorBean.errMsg"/> 

我在這裏顯示ERRMSG但它顯示爲空。

請你幫我看看如何在struts2中顯示自定義消息。

回答

0

我相信,以顯示在用戶界面外,S2提供了一個乾淨的方式來做到這一點,默認情況下,ExceptionMappingInterceptor添加以下值值棧:

  1. 異常中的異常對象本身
  2. exceptionStack從堆棧跟蹤

的價值,這是所有你需要在你的JSP頁面做

<s:property value="%{exception.message}"/> 
    <s:property value="%{exceptionStack}"/> 

詳細信息請參看官方文檔

另外,你不需要做request.setAttribute("error", err);爲S2提供了一個乾淨,所有你需要在你的動作類申報財產有了它的getter和setter,你可以隨意在JSP中冷藏它們,因爲這個屬性將作爲Value-stack的一部分提供。

但我仍然認爲,不應該是顯示信息給用戶的方式和它的總是最好使用框架提供的方法是更加靈活和易於使用的

+0

感謝您replay.could請您提供在strut2中開發異常處理的參考url – rams 2012-04-19 09:50:11

+0

@rams:異常處理在S2中沒有什麼不同,並且沒有特別的例外,你需要在S2下拋出,你幾乎可以自由地拋出任何異常,並且我已經在我的程序中提供了2個引用解答如何處理和向最終用戶顯示信息的答案 – 2012-04-19 09:53:47