从控制器中的参数绑定 Grails 日期
为什么通过 grails 控制器中的参数从视图中提取日期如此困难?
我不想像这样手动提取日期:
instance.dateX = parseDate(params["dateX_value"])//parseDate is from my helper class
我只想使用 instance.properties = params
。
在模型中,类型为 java.util.Date,参数中包含所有信息:[dateX_month: 'value', dateX_day: 'value', ...]
我在网上搜索了一下,没有发现任何相关内容。我希望 Grails 1.3.0 能有所帮助,但仍然是同样的事情。
我不能也不会相信手动提取日期是必要的!
Why is it so hard to extract the date from the view via the params in a grails controller?
I don't want to extract the date by hand like this:
instance.dateX = parseDate(params["dateX_value"])//parseDate is from my helper class
I just want to use instance.properties = params
.
In the model the type is java.util.Date
and in the params is all the information: [dateX_month: 'value', dateX_day: 'value', ...]
I searched on the net and found nothing on this. I hoped that Grails 1.3.0 could help but still the same thing.
I can't and will not believe that extracting the date by hand is necessary!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
Grails Version >= 2.3
Config.groovy
中的设置定义了将参数绑定到Date
时将在应用程序范围内使用的日期格式中指定的格式grails.databinding.dateFormats
将按照它们包含在列表中的顺序进行尝试。覆盖单个命令对象的这些应用程序范围的格式
您可以使用
@BindingFormat
Grails Version。 2.3
你的固执是有回报的,早在 Grails 1.3 之前就已经可以直接绑定日期了。步骤如下:
(1) 创建一个类,为您的日期格式注册一个编辑器
(2) 通过在
grails-app/conf/spring/resources.groovy
(3) 现在,当您以
格式在名为
它将自动绑定到名为foo
的参数中发送日期时yyyy/MM/ddfoo
的属性,使用:或
Grails Version >= 2.3
A setting in
Config.groovy
defines the date formats which will be used application-wide when binding params to aDate
The formats specified in
grails.databinding.dateFormats
will be attempted in the order in which they are included in the List.You can override these application-wide formats for an individual command object using
@BindingFormat
Grails Version < 2.3
Your stubbornness is rewarded, it has been possible to bind a date directly since long before Grails 1.3. The steps are:
(1) Create a class that registers an editor for your date format
(2) Make Grails aware of this date editor by registering the following bean in
grails-app/conf/spring/resources.groovy
(3) Now when you send a date in a parameter named
foo
in the formatyyyy/MM/dd
it will automatically be bound to a property namedfoo
using either:or
Grails 2.1.1 在 params 中有新的方法,可以轻松进行 null 安全解析。
在文档此处中找到它
Grails 2.1.1 has new method in params for easy null safe parsing.
Find it in doc here
Grails 版本 >= 3.x
您可以在 application.yml 中按照以下语法设置日期格式:
Grails Version >= 3.x
You can set in application.yml the date formats following this syntax:
您是否尝试过使用任何 Grails 日期选择器插件?
我对日历插件有很好的体验。
(使用日历插件时)当您提交日期选择的请求时,您可以自动将查询参数绑定到您想要用请求填充的域对象。
例如,
您还可以像这样解析“yyyy/MM/dd”日期字符串......
Have you tried using any of the Grails date picker plugins?
Ive had good experiences with the calendar plugin.
(When using the calendar plugin) When you submit the request of the date selection you can automatically bind the query parameter to the domain object you want to populate with the request.
E.g.
You can also parse a "yyyy/MM/dd" date string like so...
@Don 感谢上面的回答。
这是自定义编辑器的替代方案,它先检查日期时间,然后检查日期格式。
Groovy,只需在 java 中添加分号即可
@Don Thanks for the answer above.
Here's an alternative to the custom editor that checks first date time then date format.
Groovy, just add semi colons back in for java
Grails 版本 >= 2.3
用于将字符串转换为日期的 localeAware 版本
在 src/groovy 中:
在 conf/spring/resources.groovy 中:
bean 的名称“defaultDateConverter”实际上是重要(覆盖默认日期转换器)
Grails Version >= 2.3
A localeAware version to convert strings to date
In src/groovy:
In conf/spring/resources.groovy:
The bean's name 'defaultDateConverter' is really important (to override the default date converter)