为什么我需要在 Grails 中解析日期?
我的处境很不幸,我需要在处理遗留数据的 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));
这感觉不是最佳的,更不用说危险了(如果日期格式随区域设置改变怎么办?)?推荐的方法是什么?我真的需要解析日期吗?
I am in the unfortunate position that I need to use a composite id in a Grails app where I work with legacy data. This means I have to override some actions in the controller, but as I did this I was struck by the fact that I could not use use a date argument directly as a parameter to a dynamic method.
Instead of just doing MyLegacyObj.findBySystemIdAndLogDate(params.systemId, params.logDate)
, I first needed to parse the date string before giving it to the dynamic method. To further complicate matters I had no idea what format the date string had (until I added lots of log.debug() string to the output). So now I have a bit of code looking like this
def formatter = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy")
MyLegacyObj.findBySystemIdAndLogDate(params.systemId, formatter.parse(params.logDate));
This feels unoptimal, no to say dangerous (what if the date format changes with the locale?)? What would be a recommended way of doing this, and do I really need to parse dates at all?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Date
是一个相当复杂的对象,而params
只是String
,因此Date
是分部分提交的。当分配 x.properties = params 时,它是由各个部分“神奇地”组装而成的。命令对象如果您向其中添加
Date
字段,它将为您完成这项工作。它与方法的动态或静态调用无关。您呈现
Date
编辑器的 GSP 也可能会产生干扰。Date
is a pretty complex object andparams
are justString
s, soDate
is submitted in parts. It is "magically" assembled from the parts when assigningx.properties = params
.Command object will do the work for you, if you add a
Date
field to it.It has nothing to do with methods' dynamic or static invocation. Your GSP that renders
Date
editor might interfere too.