struts2中如何定义全局result和exception-mappings?
需求:希望action类的操作方法如execute抛出异常时,在一个error.jsp中显示异常,而不是直接报出一堆堆栈信息。<global-results>和<global-exception-mappings>可以满足一部分要求,却要在每个package中定义,麻烦。
<package name="mystruts" namespace="/mystruts" extends="struts-default">
<global-results>
<result name="error">/error.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping result="error" exception="java.lang.Exception"></exception-mapping>
</global-exception-mappings>
<action name="sum" class="com.test.CalAction">
<result name="positive">/positive.jsp</result>
<result name="negative">/negative.jsp</result>
<result name="test">/result.jsp</result>
</action>
</package>
有没有更直接的办法? --------------------编程问答-------------------- 配置个抽象包试试然后其他包继承这个抽象包 --------------------编程问答-------------------- 没有更直接的办法,或者像2楼说的配置个抽象包,然后每个都继承,或者取该下stuts2的默认的配置,将你的这些异常和结果加进去(不建议这么做).
不过你可以查看看再资源文件中该怎么来配置,貌似应该有解方法的. --------------------编程问答-------------------- 非常感谢两位。
请问抽象包怎样配置,是这样吗?
<package name="try">
<global-results>
<result name="error">/error.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping result="error" exception="java.lang.Exception"></exception-mapping>
</global-exception-mappings>
</package>
<package name="mystruts" namespace="/mystruts" extends="try">
<action name="sum" class="com.test.CalAction">
<result name="positive">/positive.jsp</result>
<result name="negative">/negative.jsp</result>
<result name="test">/result.jsp</result>
</action>
</package>
启动时就报错了。No result type specified for result named 'error', perhaps the parent package does not specify the result type? - result --------------------编程问答-------------------- <package name="pkg" extends="struts-default" abstract="true">
<global-results>
...
</global-results>
<global-exception-mappings>
...
</global-exception-mappings>
</package>
<package name="test" namespace="/test" extends="pkg">
</package> --------------------编程问答--------------------
试试看,应该没问题了 --------------------编程问答-------------------- 4楼不错 --------------------编程问答-------------------- 4楼正确
还有,报出一堆堆栈信息是因为你的devmode设为true了,可以只让它在控制台报的 --------------------编程问答-------------------- 按照上面的配置报错:麻烦把我解释下
java.lang.IllegalStateException: Cannot call sendError() after the response has been committed --------------------编程问答-------------------- 写一个package,把globle的信息放进去,其它的分包集成这个包就欧了
补充:Java , Java EE