我有多个 XML 配置。
struts.xml
<struts>
<include file="struts-user.xml" />
<package name="baseInterceptors" extends="struts-default">
<interceptor name="...">
...
</interceptor>
...
</package>
<package name="default" extends="struts-default,baseInterceptors">
<action name="...">
...
</action >
...
</package>
</struts>
struts-user.xml
<struts>
<package name="user" extends="struts-default,baseInterceptors">
<action name="...">
...
</action >
...
</package>
</struts>
但是来自 baseInterceptors
的拦截器在 struts-user.xml
中不可用。我该如何解决这个问题?
最佳答案
配置文件按顺序处理:<include>
在 baseInterceptors
之前处理和default
包被处理(读:定义)。
换句话说,包含的文件依赖于尚未定义的包。
package configuration docs在顶部附近的注释中解释这一点,旁边有一个感叹号。
不相关,但您重复了一些配置,这是误导性的/无法沟通的:baseInterceptors
已经延长struts-default
,因此无需扩展两者。考虑创建类似 application-default
的内容包,因此很明显应用程序中的所有内容都应该从中扩展。这可以消除不必要的重复并传达您的意图。
关于java - 多个 Struts 2 配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9948858/