Pab*_*dez 1 validation grails groovy command-objects
我是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>
Run Code Online (Sandbox Code Playgroud)
Controller(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)
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我输入错误的名称或传递(空白或超出范围)时,它会显示4个错误,两个用于密码,两个用于用户名.它们是相同的,但重复.
我发现创建一个方法"bool validateCommand(){name && password}"并将其替换为command.validate()不会抛出重复项,但我想使用Grails的约束功能来保持DRY.
知道为什么会这样吗?非常感谢!
将命令对象注入控制器操作时,Grails会validate()
自动执行,因此无需手动调用它.尝试
if(!cmd.hasErrors())
Run Code Online (Sandbox Code Playgroud)
代替
if(cmd.validate())
Run Code Online (Sandbox Code Playgroud)
似乎每次调用都会向validate()
命令对象添加新的(重复的)错误.恕我直言,这不应该发生,可能是Grails中的一个错误.您应该考虑报告此问题.
归档时间: |
|
查看次数: |
1012 次 |
最近记录: |