1

目前我们正在将 Grails 版本从 1.3.3 升级到 2.2.4。这样做时,我们遇到了复选框值的布尔绑定问题。

这是代码...

Domoan: 
    A {
         :
         :
         Boolean check
      }
View: 
              :
              :
          <g:checkbox name = "check" value = &{A?.Check}/>

Controller:
   def Save {
           def aInstance = new A(params)
           if (aInstance.check)
           }  

在上述情况下,布尔值没有正确绑定,我们总是在 if 语句中得到“null”。

知道我们如何克服这个问题吗?

谢谢你的时间。

4

1 回答 1

1

经过多次网上冲浪后,我明白了。实际是瞬态值绑定问题。

现在静态类型的实例属性默认是可绑定的。默认情况下不可绑定的属性是那些与瞬态字段、动态类型属性和静态属性相关的属性。

所以解决方案是:

必须为可绑定约束分配一个文字布尔值。动态表达式不是可绑定约束的有效值。该值必须是文字真或假。

在我的问题中:

多摩安:

A {
     :
     :
     Boolean check
     static transients = ['check']
     static constraints = {
       check bindable: true
       :
       : 
     }

}

来源: http: //grails.org/doc/latest/ref/Constraints/bindable.html

于 2014-01-12T06:23:47.783 回答