【问题标题】:Grails Duplicate Error MessagesGrails 重复错误消息
【发布时间】:2012-03-14 14:31:47
【问题描述】:

我是 grails 新手,但遇到一个问题:

我有这个 GSP 的 sn-p:

<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 的约束功能来保持干燥。

知道为什么会这样吗?非常感谢!

【问题讨论】:

    标签: validation grails groovy command-objects


    【解决方案1】:

    当您将命令对象注入控制器动作时,Grails 会自动执行validate(),因此无需手动调用它。试试

    if(!cmd.hasErrors())
    

    而不是

    if(cmd.validate())
    

    似乎每次调用validate() 都会向命令对象添加新的(重复的)错误。恕我直言,这不应该发生,并且可能是 Grails 中的一个错误。你应该考虑reporting这个问题。

    【讨论】:

      猜你喜欢
      • 2014-01-29
      • 2010-12-07
      • 2015-02-06
      • 2013-12-18
      • 1970-01-01
      • 2012-07-14
      • 2015-08-09
      • 2019-01-09
      • 1970-01-01
      相关资源
      最近更新 更多