私は単純な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 で行われる複雑な検証は機能していません。
ページが空白になります。
【意図的に輸入品を除外しています】