我一直在尝试在我的项目中运行以下代码。整个项目工作正常,但拦截器部分没有显示任何结果。我是拦截器部分的新手所以请告诉我,如果我的代码缺少某些东西。我也希望知道运行拦截器的唯一更改是通过添加拦截器标签在struts.xml文件中完成吗?
enter code here
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true"/>
<package name="default" namespace="/" extends="struts-default">
<interceptors>
<interceptor name="timer" class=".."/>
<interceptor name="logger" class=".."/>
</interceptors>
<action name="HelloWorld">
<result>/HelloWorld/HelloWorld.jsp</result>
<interceptor-ref name="timer"/>
<interceptor-ref name="logger"/>
</action>
<action name="SayHello" class="com.sapient.test.HelloAction">
<result name="SUCCESS">/HelloWorld/DisplayHello.jsp</result>
<result name="INPUT">/HelloWorld/HelloWorld.jsp</result>
<interceptor-ref name="timer"/>
<interceptor-ref name="logger"/>
</action>
</package>
请注意,当我添加拦截器代码时,Web应用程序的其余部分工作正常。其余的Web应用程序在运行时运行,但拦截器部分无法正常工作。它不是一个缓存问题因为我试过多次清理服务器和目录但没有效果。请帮忙。
答案 0 :(得分:0)
请在struts.xml中配置拦截器,如下所示,
<interceptor name="loginInterceptor" class="......." />
<interceptor-stack name="loginInterceptorStack">
<interceptor-ref name="loginInterceptor" />
<interceptor-ref name="defaultStack" />
</interceptors>
然后将拦截器堆栈应用于操作
<action name="..." class=".....">
<interceptor-ref name="loginInterceptorStack"></interceptor-ref>
<result name="input">.....</result>
<result name="success">...../result>
</action>
在结果操作配置之前添加拦截器。还要在拦截器中添加适当的日志记录,以便在调用默认堆栈之前知道你的拦截器被调用。