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;
}

sendMessageを実行する代わりに、Strutsはexecuteメソッドを呼び出します。なんで?私のstruts-configは間違っていますか?または、別の構成設定がありませんか?

4

3 に答える 3

8

まず、アクションがDispatchActionを拡張していることを確認してください。そのクラスのexecuteメソッドは、リクエストパラメータの抽出と対応するメソッドの呼び出しを担当するため、おそらくオーバーライドしないでください。実行をオーバーライドすると、このロジックは実行されなくなります。

于 2010-07-22T15:13:49.483 に答える
1

UpdateAccountActionはDispatchActionを拡張しますか? これがあなたがやろうとしていることをする実際の例です。

于 2010-07-22T15:12:39.527 に答える
0

まず、html:form action = "/ updateAccountInfo.do">で、updateAccountInfo.doについて言及し、sendMessageを呼び出したいと考えています。どうしてそれは可能ですか?違います。

もう1つは、アクションクラスではなくディスパッチアクションが必要なことです。strutsを呼び出すには複数のメソッドが必要なようですので、dispatchactionクラスを使用することをお勧めします。

ディスパッチアクションの使用方法と必要な場合の詳細については、mkyonサイトを参照してください。

于 2010-12-09T11:25:28.330 に答える