我刚接触过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 validate command()name&password”并将其替换为command.validate()不会抛出重复项,但我希望使用grails的约束特性来保持干燥。
知道为什么会这样吗?非常感谢!