我处于不幸的位置,我需要在Grails应用程序中使用复合ID,我将使用旧数据。这意味着我必须覆盖控制器中的一些操作,但是当我这样做时,我感到震惊的是我不能直接使用日期参数作为动态方法的参数。
我不是只做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));
这感觉不够理想,不要说危险(如果日期格式随语言环境而变化怎么办?)?建议的方法是什么,我真的需要解析日期吗?
答案 0 :(得分:1)
Date
是一个非常复杂的对象,而params
只是String
s,所以Date
部分提交。在分配x.properties = params
时,它会从部件中“神奇地”组装。
Date
字段,Command object将为您完成工作。
它与方法的动态或静态调用无关。呈现Date
编辑器的GSP也可能会干扰。