参数“方法”不起作用(Struts 1)

时间:2010-07-22 14:50:41

标签: java jsp struts struts-1

我在struts.xml中声明了以下操作:

    <action path="/updateAccountInfo"
            type="org.myCompany.UpdateAccountAction"
            name="myAccountForm"
            scope="session"
            validate="true"
            parameter="method" 
            input="/updateAccountInfo.jsp">
        <forward name="success" path="/updateAccountInfo.jsp" />
    </action>

在我的JSP页面中,我有以下形式:

<html:form action="/updateAccountInfo.do">
    <input type="hidden" name="method" value="sendMessage" />

在我的java类中,我有以下方法:

public final ActionForward sendMessage(final ActionMapping mapping, final ActionForm form, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
    System.out.println("sending");
    return null;
}

Struts不是运行sendMessage,而是调用execute方法。为什么?我的struts-config错了吗?或者我错过了另一个配置设置?

3 个答案:

答案 0 :(得分:8)

请先确保您的操作扩展了DispatchAction。您可能不应该覆盖该类中的execute方法,因为该方法负责提取请求参数并调用相应的方法。如果覆盖执行,则此逻辑将不再执行。

答案 1 :(得分:1)

您的UpdateAccountAction是否扩展了DispatchAction? Here's a working example做你想做的事。

答案 2 :(得分:0)

首先是在html中:form action =“/ updateAccountInfo.do”&gt;你提到了updateAccountInfo.do并且想要调用sendMessage。怎么可能?它是不同的。

其他的是你的需要需要调度动作而不是动作类。看起来你需要多个方法来调用struts,所以建议使用dispatchaction类。

有关如何使用调度操作的详细信息以及何时需要,请参阅mkyon网站。