我是 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 个错误,两个用于密码,两个用于用户名。它们相同,但重复。
我发现创建一个方法“bool validateCommand(){ name && password }”并将其替换为 command.validate() 不会引发重复,但我想使用 Grails 的约束功能来保持干燥。
知道为什么会这样吗?非常感谢!