我想在引发异常时显示带有自定义消息的自定义页面。 为此,我这样做。
行动类:
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。
当在这里引发异常时,我正在为该属性设置一个值。
的error.jsp:
<s:bean name="com.sits.itv.util.Error" var="errorBean" />
<s:property value="#errorBean.errMsg"/>
这里我显示的是errMsg,但它显示为null。
您能否帮我解决一下如何在struts2中显示自定义消息。
答案 0 :(得分:0)
我相信在UI上显示异常,s2提供了一种干净的方法,默认情况下,ExceptionMappingInterceptor
将以下值添加到值堆栈中:
这就是你需要在JSP页面中做的所有事情
<s:property value="%{exception.message}"/>
<s:property value="%{exceptionStack}"/>
有关详细信息,请参阅官方文档
另外你不需要做request.setAttribute("error", err);
,因为S2提供了一个干净的,只需要在你的动作类中使用它的getter和setter声明一个属性,你就可以在JSP中自由地将它们转换为该属性作为Value-stack的一部分提供。
但我仍然认为这不应该是向用户显示信息的方式,而且总是更好地使用框架提供更灵活和易于使用的方式