2011-03-18 83 views
0

我有一個簡單的網絡應用程序:無法超越ActionForm子類

它有一個簡單的登錄頁面,用戶名和密碼。

我已經創建了一個ActionForm的子類,稱爲LoginForm的:

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映射:

<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中完成的複雜驗證不起作用。

頁面空白。

[我已經排除了進口故意]

+0

問題是? – 2011-03-18 12:56:20

+0

檢查您是否正確轉發到頁面。該頁面變爲空白表示struts無法正確轉發頁面。 – ashishjmeshram 2011-03-18 13:11:42

回答

0

必須從org.apache.struts.validator.ValidatorForm(沒有的ActionForm)擴展您的表單類(LoginForm的)。我建議你使用內置的驗證Struts功能。這個網址可以幫助你:http://struts.apache.org/1.2.4/userGuide/dev_validator.html。使用它,您不必編寫Java代碼來驗證常見(和複雜)規則。