2011-04-13 98 views
0

我处于不幸的境地,我需要在使用遗留数据的Grails应用程序中使用复合标识。这意味着我必须重写控制器中的一些操作,但是正如我所做的那样,我感到震惊的是,我无法直接使用日期参数作为动态方法的参数。为什么我需要在Grails中解析日期?

而不是仅仅做MyLegacyObj.findBySystemIdAndLogDate(params.systemId, params.logDate),我首先需要解析日期字符串,然后将其提供给动态方法。为了进一步复杂化,我不知道日期字符串有什么格式(直到我在输出中添加了大量log.debug()字符串)。所以现在我有一些代码看起来像这样

def formatter = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy") 
MyLegacyObj.findBySystemIdAndLogDate(params.systemId, formatter.parse(params.logDate)); 

这种感觉unoptimal,没有说危险(如果用的语言环境的日期格式更改?)?什么是这样做的推荐方式,我真的需要解析日期吗?

回答

1

Date是一个相当复杂的对象,params只是String s,所以Date是部分提交的。在分配x.properties = params时,它是从部件“神奇”组装的。

Command object会为你做的工作,如果你添加一个Date字段。

它与方法的动态或静态调用无关。编辑Date的GSP也可能会受到干扰。