1

私は Struts 2 で開発しており、同じアクション (ユーザーを表す) で 2 つのメソッドを検証したいと考えています。1 つ目は の役割をチェックするログイン方法でuser (admin or normal user)、2 つ目は を編集する方法userです。

public class UserAccountAction extends AppSupport {

    public String login() {
        if (getUsername().equals("admin") && getPassword().equals("admin")) {
            session.put("username", getUsername());
            return "adminSuccess";
        } else if (getUsername().equals("user") && getPassword().equals("user")) {
            session.put("username", getUsername());
            return "userSuccess";
        } else {
            addActionError(getText("login.failedLoginCredential"));
            return INPUT;
        }
    }

    public String editProfile {
        // ...
    }
}

そのために、2 つの xml ファイルを作成しました : UserAccountAction-login-validation.xml:

<validators>
    <field name="login">
        <field-validator type="required">
            <message key="form.required" />
        </field-validator>
    </field>

    <field name="password">
        <field-validator type="required">
            <message key="form.required" />
        </field-validator>
    </field>
</validators>

とはUserAccountAction-editProfile-validation.xml同じです。lastnamefirstname

struts.xml:_

    <action name="login" method="login" class="com.project.action.UserAccountAction">
    <result name="input">/jsp/login.jsp</result>
    <result name="userSuccess" type="redirect">home.html</result>
    <result name="adminSuccess" type="redirect">admin/home.html</result>
</action>

<action name="edit_account" method="editProfile" class="com.facilityrh.action.UserAccountAction">
    <result name="input" type="tiles">userEditProfile</result>
    <result name="success" type="redirect">account.html</result>
</action>

そしてlogin.jsp

<s:if test="hasActionErrors()">
    <div class="error"><s:actionerror /></div>
</s:if>

<s:if test="hasActionMessages()">
    <div class="message"><s:actionmessage /></div>
</s:if>

<s:form action="login" method="post">
    <s:textfield name="login" key="login.login" /><br />
    <s:password name="password" key="login.password" /><br />
    <s:submit name="submit" key="login.submit" /> 
</s:form>

今のところ、アクションでは検証が基本ですが、後でデータベースを使用して情報を取得します。

問題は、フォームを送信すると、(login or editProfile)エラーがないためメソッドが実行されず、同じjspで返されることです(入力の横に必要なメッセージなし)

ありがとうございました

4

0 に答える 0