0

私は単純なWebアプリを持っています:

ユーザー名とパスワードを取得する簡単なログイン ページがあります。

LoginForm という ActionForm サブクラスを作成しました。

public class LoginForm extends ActionForm 
{
    private String username;
    private String password;

    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

    public ActionErrors validate(ActionMapping mapping,HttpServletRequest request)
    {
        ActionErrors errors=new ActionErrors();

        System.out.println("In LoginForm");

        if(username.equals(""))
        {
            errors.add("username",new ActionMessage("loginerror.usernameEmpty"));
        }
        else if(password.equals(""))
        {
            errors.add("password",new ActionMessage("loginerror.passwordEmpty"));
        }

        return errors;
    }

    public void reset(ActionMapping mapping,HttpServletRequest request)
    {
        this.username=null;
        this.password=null;
    }

}

そして Action サブクラス: LoginAction

public class LoginAction extends Action
{
    public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServlet response)
    {
        LoginForm loginform=(LoginForm)form;

        String username=loginform.getUsername();
        String password=loginform.getPassword();

        System.out.println("Username="+username+" & Password="+password);

        if(username.equals("lokesh"))
        {
            ActionMessages errors=new ActionMessages();

            errors.add("username",new ActionMessage("loginerror.usernameInvalid"));

            saveErrors(request,errors);

            return mapping.getInputForward();

        }

        return mapping.findForward("success");
    }

}

Struts アクション マッピングは次のとおりです。

 <action-mappings>
        <action path="/login" type="occ.controller.LoginAction" name="LoginForm" scope="request" validate="true" input="/index.jsp"  >
            <forward name="success" path="/index.jsp" />
        </action>
    </action-mappings>

ActionForm の検証は完璧に進んでいますが、LoginAction で行われる複雑な検証は機能していません。

ページが空白になります。

【意図的に輸入品を除外しています】

4

1 に答える 1

0

org.apache.struts.validator.ValidatorForm (ActionForm ではない) からフォーム クラス (LoginForm) を拡張する必要があります。組み込みの検証 Struts 機能を使用することをお勧めします。次のURL が役に立ちます: http://struts.apache.org/1.2.4/userGuide/dev_validator.html。これを使用すると、一般的な (そして複雑な) ルールを検証するために Java コードを記述する必要がなくなります。

于 2011-03-18T19:10:42.433 に答える