struts2默认拦截器堆栈配置
我想为异常拦截器配置一个参数来记录异常。 因此,我在 struts.xml 中创建了一个包,并从 struts-default.xml 复制了默认堆栈。 然而它不记录异常并且似乎仍然使用defaultStack。
这是我的 struts.xml:
<struts>
<package name="default" extends="struts-default">
<interceptors>
<interceptor-stack name="myStack">
<interceptor-ref name="exception">
<param name="logEnabled"> true </param>
<param name="logCategory"> struts </param>
<param name="logLevel"> ERROR </param>
</interceptor-ref>
...
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myStack" />
</package>
</struts>
I want to configure a parameter for the exception interceptor to log exceptions.
So I created a package in struts.xml and copied the default-stack from struts-default.xml.
However it doesn't log exceptions and seems to still use the defaultStack.
Here is my struts.xml:
<struts>
<package name="default" extends="struts-default">
<interceptors>
<interceptor-stack name="myStack">
<interceptor-ref name="exception">
<param name="logEnabled"> true </param>
<param name="logCategory"> struts </param>
<param name="logLevel"> ERROR </param>
</interceptor-ref>
...
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myStack" />
</package>
</struts>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您添加的所有新操作都在同一个包中,即扩展 struts-default 的“default”包,那么这应该可以正常工作。
据我所知,只有一种可能会出错,那就是:
您已经在不同的包中编写了操作(再次扩展了 struts-default 而不是“default”-自定义包),因此,它将使用 defaultStack 作为默认拦截器堆栈,这是 struts-default 的默认堆栈。
因此,如果您希望 myStack 覆盖默认堆栈,请确保您的操作位于自定义包内 - “default”,或者位于扩展自定义包“default”的包内,而不是 struts-default 包内。
This should work fine, provided all the new actions that you add are in the same package, i.e, "default" package which extends struts-default.
AFAIK there can be just 1 possibility because of which it can go wrong, and that will be :
You have written your actions in a different package(that again extends struts-default rather than "default"-the custom package), and thus, it would use the defaultStack as the default interceptor stack, which is the default stack for struts-default.
So, if you want the default stack to be over-ridden by myStack, make sure that your action is inside your custom package - "default" or inside a package that extends your custom package "default" rather than the struts-default package.