Grails重複エラーメッセージ
-
05-07-2019 - |
質問
私は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つはユーザー名用です。それらは同じですが、重複しています。
メソッド&quot; bool validateCommand(){name&amp;&amp;パスワード}&quot; command.validate()に置き換えても重複はスローされませんが、Grailsの制約機能を使用して物事をドライに保ちたいと思います。
これが起こる理由は何ですか?どうもありがとう!
解決
コントローラオブジェクトにコマンドオブジェクトを挿入すると、Grailsは validate()
を自動的に実行するため、手動で呼び出す必要はありません。お試しください
if(!cmd.hasErrors())
の代わりに
if(cmd.validate())
validate()
を呼び出すたびに、コマンドオブジェクトに新しい(重複した)エラーが追加されるようです。私見これは起こるべきではなく、おそらくGrailsのバグです。この問題を報告することを検討してください。
所属していません StackOverflow