我在使用标记时遇到了一些麻烦,然后使用发送的参数从模型中更新了我的Date属性。
这是我的标签:
<g:datePicker name="data" value="${controle.data}" precision="month"
years="${(Calendar.getInstance().get(Calendar.YEAR)-70)..Calendar.getInstance().get(Calendar.YEAR)}"/>
当我在“params.data”中打印时,它显示为“struct”,但是我不能简单地这样做:
model.data = params.data
params带有params.data_month和params.data_year,其String中的值分别为:
[[data:struct], [data_month:1], [data_year:2009]]
然后我尝试这样做:
model.data = new SimpleDateFormat("MM/yyyy").parse("${params.data_month}/${params.data_year}")
但它拒绝该值,并发出警告:“无法将类型[java.lang.String]的值转换为属性'data'的必需类型[java.util.Date]”
println model.data
println new SimpleDateFormat("MM/yyyy").parse("${params.data_month}/${params.data_year}")
--shows
2006-01-01 00:00:00.0
Sun Jan 01 00:00:00 BRST 2006
最佳答案
为什么不?您是一个异常(exception),还是只是被过时的文档误导? --
这是一个功能since Grails 1.2。将自动转换为Date
类型。
至于SimpleDateFormat
问题,只需添加一天,就像这样:
model.data = new SimpleDateFormat("d/MM/yyyy").parse(
"1/${params.data_month}/${params.data_year}")