在看struts-2.2.1的文档时,按照例子的步骤一步步地做下去,但是在做到Exception Handling这一节时(http://struts.apache.org/2.2.1/docs/exception-handling.html)要在struts.xml中配置以下信息:
<global-exception-mappings>
<exception-mapping exception="org.apache.struts.register.exceptions.SecurityBreachException" result="securityerror" />
<exception-mapping exception="java.lang.Exception" result="error" />
</global-exception-mappings>
<global-results>
<result name="securityerror">/securityerror.jsp</result>
<result name="error">/error.jsp</result>
</global-results>
但是当我把这段内容Ctrl+C再Ctrl+Z到Eclipse时package标签却报了错,错误如下:The content of element type "package" must match "(result-types?,interceptors?,default-interceptor-ref?,default-action-ref?,default-class-ref?,global-results?,global-exception-mappings?,action*)"。大概就是说package下只能放特定的几个标签,但是明明有global-exception-mappings,一时有些困惑……
于是Google搜索,在Struts以往的版本中也发现一个类似的例子,有些不一样的是global-results标签在global-exception-mappings的前面,于是就在本地试验了一下,把global-results标签与global-exception-mappings调换了一下顺序,错误消失了……
至于这个问题的原因,我思考了一下还是想不出个所以然,觉得完全没必要这样,global-exception-mappings在前面反而能更清晰地表达意思,或者就不要管顺序嘛,而struts为什么非要报这个错误呢?
请高手给予解答。