我在使用标记时遇到了一些麻烦,然后使用发送的参数从模型中更新了我的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}")

10-02 03:19
查看更多