关于在struts.xml文件中的各个节点的配置顺序问题

来源:互联网 发布:手机图片排版软件 编辑:程序博客网 时间:2024/05/29 07:31

今天在struts2中的<global-results>以及<default-action-ref>配置时遇到了一下问题,希望初学者注意一下:

先直接上配置文件:

 

<package name="login" namespace="/user" extends="struts-default"><!--global-results表示一个全局的结果集,即在该包下的任何一个action中所共享result结果集.若果想让该结果集被其他包共享,需要继承该package即可--><global-results><result name="mainpage">/loginSuccess.jsp</result></global-results><!--default-action-ref表示在该namespace中没有找到相应的action的时候,就会选择默认的 action来进行执行--><default-action-ref name="default" /><action name="default"><result>/default.jsp </result></action><action name="login2" class="com.lgh.LoginAction"><result name="login">/loginError.jsp</result></action></package>

但是在使用IDE部署的时候,出现如下错误:

Caused by: org.xml.sax.SAXParseException; systemId: file:/D:/Program%20Files%20(x86)/apache-tomcat-6.0.37-windows-x64/apache-tomcat-6.0.37/webapps/Struts2_1600_GlobalResult/WEB-INF/classes/struts.xml; 元素类型为 "package" 的内容必须匹配 "(result-types?,interceptors?,default-interceptor-ref?,default-action-ref?,default-class-ref?,global-results?,global-exception-mappings?,action*)"。

关键是红色字段的错误提示,他告诉我们package的内容必须按照
 result-types---->interceptors---->default-interceptor-ref---->default-action-ref---->default-class-ref---->global-results---->global-exception-mappings---->action*
的顺序进行配置struts.xml文件。 所以我按照该顺序重新编写后,问题果然得到了解决。

而且,经过查看struts2.3.dtd文件,中也确实是如此的定义了package下的 子元素(result-types,interceptors..)必须按照给定的顺序出现0次或1次。

<!ELEMENT package (result-types?, interceptors?, default-interceptor-ref?, default-action-ref?, default-class-ref?, global-results?, global-exception-mappings?, action*)>