2011-03-18 2 views
0

J'ai une application simple web:Impossible d'aller au-delà du ActionForm Sous

Il a une page de connexion simple, en prenant le nom d'utilisateur et mot de passe.

J'ai créé une sous-classe ActionForm appelé 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; 
    } 

} 

Et une sous-classe d'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"); 
    } 

} 

La mise en correspondance d'action Struts est:

<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> 

maintenant la validation ActionForm est parfait, mais la validation complexe effectuée dans LoginAction ne fonctionne pas.

La page devient vierge.

[J'ai exclu les importations délibérément]

+0

Et la question est? –

+0

vérifiez si vous redirigez vers les pages correctement. la page est vide signifie que les entretoises n'ont pas pu transmettre correctement les pages. – ashishjmeshram

Répondre

0

Vous devez étendre votre classe de formulaire (LoginForm) de org.apache.struts.validator.ValidatorForm (non ActionForm). Je vous recommande d'utiliser la fonction Struts de validation intégrée. Cette URL peut vous aider: http://struts.apache.org/1.2.4/userGuide/dev_validator.html. En utilisant cela, vous n'avez pas besoin d'écrire du code Java pour valider les règles communes (et complexes).

Questions connexes