私はgrailsを初めて使用し、問題があります。
私は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>
コントローラ(MainController.groovy)はコマンドオブジェクトを使用します。両方のコードは次のとおりです。
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)
}
}
問題は、間違った名前またはパス(空白または範囲外)を入力すると、4つのエラーが表示されることです。2つはパスワード用、2つはユーザー名用です。それらは同じですが、重複しています。
メソッド「boolvalidateCommand(){name && password}」を作成し、それをcommand.validate()に置き換えると重複がスローされないことがわかりましたが、Grailsの制約機能を使用して物事をドライに保ちたいと思います。
なぜこれが起こるのか考えていますか?本当にありがとう!