Struts2:Interceptor被调用,但不是Action类

时间:2011-09-15 09:27:20

标签: struts2

这是我的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();
    }
}

3 个答案:

答案 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()方法失败了。