Parameter “method” not working (Struts 1)

2020-04-19 08:20发布

I have the following action declared in my 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>

In my JSP page, I have the following form:

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

In my java class, I have the following method:

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

Instead of running sendMessage, Struts call the execute method. Why? Is my struts-config wrong? Or am I missing another config setting?

3条回答
Rolldiameter
2楼-- · 2020-04-19 08:38

First thing is that in html:form action="/updateAccountInfo.do"> you have mentioned updateAccountInfo.do and want to call the sendMessage. How it is possible?? It is different.

Other thing is is that your need require the dispatch action rather action class. It seem you require multiple method to call in struts so it is recommended to use dispatchaction class.

Refer mkyon site for more details about how to use dispatch action and when it is required.

查看更多
Viruses.
3楼-- · 2020-04-19 08:39

Does your UpdateAccountAction extend DispatchAction? Here's a working example that does what you're trying to do.

查看更多
我想做一个坏孩纸
4楼-- · 2020-04-19 09:00

Please first make sure that your action extends DispatchAction. You probably should not override the execute method in that class since that method is responsible for extracting the request parameter and invoking the corresponding method. If you override execute this logic will no longer execute.

查看更多
登录 后发表回答