需求:希望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> 
有没有更直接的办法?

解决方案 »

  1.   

    没有更直接的办法,或者像2楼说的配置个抽象包,然后每个都继承,或者取该下stuts2的默认的配置,将你的这些异常和结果加进去(不建议这么做).不过你可以查看看再资源文件中该怎么来配置,貌似应该有解方法的.
      

  2.   

    非常感谢两位。请问抽象包怎样配置,是这样吗?
            <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 
      

  3.   

    <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了,可以只让它在控制台报的
      

  5.   

    按照上面的配置报错:麻烦把我解释下java.lang.IllegalStateException: Cannot call sendError() after the response has been committed
      

  6.   

    写一个package,把globle的信息放进去,其它的分包集成这个包就欧了