我正在尝试实现一些命令对象验证,但是命令对象的一个属性没有绑定它总是返回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 =空
我希望你能帮助我
答案 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'"]
// ...
我希望有所帮助。