0

我想在引发异常时显示带有自定义消息的自定义页面。为此,我正在这样做。

动作类:

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>

错误----这是一个包含 errMsg 属性的 bean。

当此处引发异常时,我正在为该属性设置一个值。

错误.jsp:

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

在这里,我正在显示 errMsg,但它显示为空。

你能帮我如何在struts2中显示自定义消息吗?

4

1 回答 1

0

我相信在 UI 上显示异常,s2 提供了一种干净的方法来做到这一点,默认情况下,ExceptionMappingInterceptor将以下值添加到值堆栈:

  1. exception 异常对象本身
  2. exceptionStack 来自堆栈跟踪的值

这就是您在 JSP 页面中需要做的所有事情

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

详情参考官方文档

另外你不需要做 request.setAttribute("error", err);,因为 S2 提供了一个干净的,所有你需要在你的动作类中声明一个属性及其 getter 和 setter,你可以自由地将它们冷藏在你的 JSP 中,因为该属性将作为 Value-stack 的一部分提供.

但我仍然认为这不应该是向用户显示信息的方式,它总是更好地使用框架提供了更灵活和易于使用的方式

于 2012-04-19T09:42:43.893 回答