命令对象没有绑定属性

时间:2014-09-12 21:14:08

标签: grails

我正在尝试实现一些命令对象验证,但是命令对象的一个​​属性没有绑定它总是返回null

域类

package ni.sb

class PurchaseOrder implements Serializable {
  Date dateCreated
  Date dutyDate
  String invoiceNumber
  BigDecimal balance
  String typeOfPurchase

  Date lastUpdated

  static constraints = {
    dutyDate nullable:false, validator: { dutyDate ->
    def today = new Date()

    if (dutyDate <= today) {
      "notMatch"
    }
   }
   invoiceNumber blank:false, unique:true
   balance nullable:true
   typeOfPurchase inList:["Contado", "Credito"], maxSize:255
 }

}

这是命令对象

class PurchaseOrderCommand implements Serializable {
  Date dutyDate
  String invoiceNumber
  String typeOfPurchase

  static constraints = {
   importFrom PurchaseOrder
 }

}

这是控制器动作

def actName(PurchaseOrderCommand cmd) {
  if (cmd.hasErrors()) {
    println params.dump()
    println cmd.dump()

    return
  }
}

在我尝试使用params和cmd的dumb()后,dutyDate没有约束力

snippet params.dump()

dutyDate:2014年9月25日

snippet cmd.dump()

dutyDate =空

我希望你能帮助我

1 个答案:

答案 0 :(得分:0)

如果你检查cmd.errors我希望你会在那里看到错误。

如果日期请求参数的格式类似于&#34; 2014-09-25&#34;并且您使用的是最新版本的Grails,那么这样的东西应该可以工作:

import org.grails.databinding.BindingFormat

class PurchaseOrderCommand implements Serializable {
    @BindingFormat('yyyy-MM-dd')
    Date dutyDate
    String invoiceNumber
    String typeOfPurchase
}

或者你可以设置&#34; yyyy-MM-dd&#34;作为Config.groovy中的默认格式之一。

// grails-app/conf/Config.groovy
grails.databinding.dateFormats = ['yyyy-MM-dd',
                                  'MMddyyyy', 
                                  'yyyy-MM-dd HH:mm:ss.S', 
                                  "yyyy-MM-dd'T'hh:mm:ss'Z'"]
// ...

我希望有所帮助。