我很不幸,我需要在使用旧数据的Grails应用程序中使用复合ID。这意味着我必须重写 Controller 中的某些操作,但是当我这样做时,我为无法将date参数直接用作动态方法的参数而感到震惊。
我首先需要解析日期字符串,然后再将其提供给动态方法,而不仅仅是做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));
这感觉不是最理想的,更不用说是危险的了(如果日期格式随语言环境而改变怎么办?)?建议这样做的方式是什么,我真的需要解析日期吗?
最佳答案
Date
是一个非常复杂的对象,而params
只是String
,因此Date
是部分提交的。分配x.properties = params
时,它是从零件中“神奇地”组装而成的。
如果您向其添加Date
字段,Command object将为您完成工作。
它与方法的动态或静态调用无关。呈现Date
编辑器的GSP也可能会干扰。
关于date - 为什么我需要在Grails中解析日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5649439/