Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

【struts2】submitタグのmethod属性を指定してもexecute()がコールされる

Tomcat6 struts2にてwebアプリを作成しております。
ログイン画面でユーザーIDをパスワードを指定
ログインボタンでチェックを行うというありきたりな処理で、ログインボタン(submit)のmethodに指定した関数ではなく、標準のexecuteがコールされてしまいます。execute自体はスーパークラスのActionSupportではなく、オーバーライドした自作のアクションクラスのexecuteがコールされているのでアクションクラス自体に問題は無い様に思えるのですが、どういった原因が考えられるのでしょうか。

//--------------------------------------------------------------
// procLogin.jsp
//--------------------------------------------------------------
 〜
    <s:form theme="simple">
        <s:hidden name="ScreenID" value="P000"/>
        <br/>
        <div style=・・・>
            〜システム Version. <s:property value="ApplicationVersion" />
            <br />
            <br />
            <table align="center">
                <tr>
                    <td>ユーザー名 : </td>
                    <td><s:textfield name="login_id" value="%{login_id}" /></td>
                </tr>
                <tr>
                    <td>パスワード : </td>
                    <td><s:password name="password" value="%{password}"/></td>
                </tr>
            </table>
            <div class="error">
                <s:property value="%{LoginErrorString}" />
            </div>
            <br />
            <s:submit value="ログイン" method="LoginCheck" cssClass="buttonMiddle" />
        </div>
    </s:form>

//--------------------------------------------------------------
// ProcLoginAction.java
//--------------------------------------------------------------
@SuppressWarnings("serial")
public class ProcLoginAction extends 〜ActionBase <- 基底クラス(ScreenIDプロパティやApplicationVersionプロパティを仕込んでいる)
{

    〜

    /**
     * ログインチェック関数
     * @return LOGIN_SUCCESS : ログイン成功 / LOGIN_FAILURE : ログイン失敗
     */
    public String LoginCheck() throws Exception {

        String Result = LOGIN_FAILURE;

        〜

        return Result;
    }
}

5

回答

213365

閲覧

5件の回答

評価

0

methodがなかったらexecute()へ行くから、認識されてない?
HTMLソースを見れば分かるかもね。

評価

0

早速の解答ありがとうございます。
上記既に確認済みです。ソースを確認しましたが、
<input type="submit" id="〜" name="method:LoginCheck" 〜 />
ときちんと入っている様に思えます。

マッピングに失敗しているかと思われるのですが、その原因が全くわかりません。

評価

0

s:formにaction指定していないからじゃない?

評価

0

struts.xmlの、
struts.enable.DynamicMethodInvocation
がtrueになっていないのかも?

評価

0

satomiさん
ご回答ありがとうございます。ビンゴです。
struts.xmlの、
struts.enable.DynamicMethodInvocation
がfalseになっておりました。

おかげさまで無事関数がコールされました。
ありがとうございました。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。