当前位置:编程学习 > JAVA >>

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 楼 Terminator_Ivan 的回复:
<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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,