2015-05-03 14 views
5

Sto lavorando su un progetto Struts 2, il problema è che sto usando <constant name="struts.ui.theme" value="simple"/> nel mio struts.xml per il layout della mia pagina JSP (ad esempio organizzando 2-3 textfiled in una sola riga usando tablecode) come da CSS applicato, ma non sono in grado di mostrare l'errore di convalida sulla stessa pagina jsp a causa di theme="simple".La convalida e il tema in Struts 2

Configurazione:

<struts> 
    <!-- Configuration for the default package. --> 
    <constant name="struts.ui.theme" value="simple"/> 
    <package name="default" extends="struts-default"> 
     <action name="validateUser" class="login.LoginAction"> 
      <result name="SUCCESS">/welcome.jsp</result> 
      <result name="input">/login.jsp</result> 
     </action> 
    </package> 
</struts> 

Azione:

public class LoginAction extends ActionSupport{ 

    private String username; // getter and setter 
    private String password; // getter and setter 


    @Override 
    public String execute() { 
     // some business logic here.... 
     return "SUCCESS";  
    } 
    //simple validation 
    @Override 
    public void validate(){    
     if("".equals(getUsername())){ 
      addFieldError("username", getText("username.required")); 
     } 
     if("".equals(getPassword())){ 
      addFieldError("password", getText("password.required")); 
     } 
    }  
} 

Vista:

<s:form action="validateUser" validate="true" > 
    <table> 
     <tr> 
      <td>username</td> 
      <td><s:textfield label="username" name="username" /><td/> 
     </tr> 
     <tr> 
      <td>password</td> 
      <td><s:password label="password" name="password" /><td/> 
     <tr> 
      <td> <s:submit label="submit" name="submit"/></td> 
     </tr> 
    </table> 
</s:form> 

C'è un modo per mantenere il layout con il mio CSS e anche la convalida di Struts 2?

risposta

3

Sicuro! Il tema XHTML aggiungerà automaticamente un tag fieldError ai tag di input;

quando si utilizza il tema semplice, invece, è necessario aggiungere manualmente, e dare un id per i tag a corrispondere loro (a meno che non sarebbe stato generato automaticamente, e più difficile da individuare):

<td> 
    <s:textfield id="username" label="username" name="username" /> 
    <s:fielderror fieldName="username" /> 
</td> 

<td> 
    <s:password id="password" label="password" name="password" /> 
    <s:fielderror fieldName="password" /> 
</td> 

PS: Credo che questi sono in errori di battitura e gli errori sono in questione solo, e non nel codice vero e proprio, ma è necessario:

  • sé chiusura <td/>,
  • un unclosed <tr> e
  • un <tr> con un'unica <td> senza colspan="2" specificato.
Problemi correlati