这是我的struts.xml文件。如您所见,已配置动作类和拦截器。
我的问题是,拦截器被调用,但不是动作类。
(在教程中,我读到拦截器执行后调用动作类方法)
请参阅我的代码:
<struts>
<package name="test" extends="struts-default">
<interceptors>
<interceptor name="loginkiran" class="vaannila.MyLoginInterCeptor" />
</interceptors>
<action name="HelloWorld" class="vaannila.HelloWorld" method="kiran">
<interceptor-ref name="loginkiran" />
<result name="SUCCESS">/success.jsp</result>
</action>
</package>
</struts>
这是我的Action类的kiran方法
public class HelloWorld {
public String kiran() {
System.out.println("Hi inside the Kiran Method");
return "SUCCESS";
}
}
========================
这是我的拦截器类
public class MyLoginInterCeptor implements Interceptor {
@Override
public String intercept(ActionInvocation invocation) throws Exception {
System.out.println("The server Port is"+str);
return invocation.invoke();
}
}
答案 0 :(得分:1)
您尚未定义INPUT结果。在struts.xml中定义它并指向带有
的页面<s:actionerror/>
标签,你会发现出了什么问题。如果这不起作用,请尝试此
<action name="HelloWorld" class="vaannila.HelloWorld" method="kiran">
<interceptor-ref name="loginkiran" />
<interceptor-ref name="basicStack" />
<result name="SUCCESS">/success.jsp</result>
<result name="input">/x.jsp</result>
</action>
答案 1 :(得分:1)
你错过了defaultStack。 在您提到的拦截器参考
下面添加<interceptor-ref name="defaultStack"></interceptor-ref>
答案 2 :(得分:0)
请写System.out.println(invocation.invoke());
并查看它返回的内容。将try / catch块添加到您的代码中它会给您一个想法。我认为invoke()
方法失败了。