Frage

Ich bin neu in Grails und habe ein Problem:

Ich habe diesen Ausschnitt von GSP:

<g:form url="[controller:'main',action:'login']"> 
  <label for="name">Usuario:</label><br/> 
  <input type="text" name="name" /><br/> 
  <label for="pass">Password:</label><br/> 
  <input type="password" name="password"/><br/> 
  <input type="submit" value="Login"/><br/> 
  <g:renderErrors bean="${cmd}"/> 
</g:form> 

Der Controller (MainController.Groovy) verwendet ein Befehlsobjekt. Hier ist der Code für beide:

def login = { LoginCommand cmd -> 
  if(cmd.validate()){ 
  redirect(action:'ok') 
  }else{ 
  render(view:'index',model:[cmd:cmd]) 
  } 
  } 

class LoginCommand { 

        String name 
        String password 

        static constraints = { 
                name(blank:false,size:5..10) 
                password(blank:false,size:5..10) 
        } 
} 

Das Problem ist, dass ich, wenn ich einen schlechten Namen oder einen schlechten Namen oder einen schlechten Bestehen eingehe (leer oder außerhalb des Bereichs) Es zeigt mir 4 Fehler, zwei für das Passwort und zwei für den Benutzernamen. Sie sind gleich, aber dupliziert.

Ich habe festgestellt, dass das Erstellen einer Methode "bool validateCommand () {name && password}" und das Ersetzen durch den Befehl. Validate () wirft keine Duplikate aus, aber ich möchte die Einschränkungen von Grails verwenden, um die Dinge trocken zu halten.

Irgendeine Idee, warum das passiert? Vielen Dank!

War es hilfreich?

Lösung

Wenn Sie Befehlsobjekte in Controller -Aktionen injizieren, ausgeführt Grails ausgeführt validate() automatisch, also muss es nicht manuell anrufen. Versuchen

if(!cmd.hasErrors())

Anstatt von

if(cmd.validate())

Es scheint, dass jeder Anruf dazu validate() Fügt dem Befehlsobjekt neue (doppelte) Fehler hinzu. IMHO Das sollte nicht passieren und ist wahrscheinlich ein Fehler in Grails. Du solltest in Betracht ziehen Berichterstattung dieses Problem.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top