从控制器中的params绑定Grails日期 [英] Binding a Grails date from params in a controller
问题描述
为什么很难通过grails控制器中的params从视图中提取日期?
我不想手动提取日期this:
instance.dateX = parseDate(params [dateX_value])// parseDate来自我的帮助类
我只想使用 instance.properties = params
。
在模型中,类型是 java.util.Date
,在params中是所有的信息: [dateX_month:'value',dateX_day:'value',...]
没有什么。我希望Grails 1.3.0能帮助但仍然是一样的。
我不能,不会相信手工提取日期是必要的!
Grails版本> = 2.3
Config.groovy
定义在将参数绑定到日期
$时应用程序范围内使用的日期格式b $ b
grails.databinding.dateFormats = [
'MMddyyyy','yyyy-MM-dd HH:mm:ss.S',yyyy-MM- dd'T'hh:mm:ss'Z'
]
grails.databinding.dateFormats
将按照列表中的顺序尝试。
可以使用 @BindingFormat
覆盖单个命令对象的这些应用程序范围格式。
import org.grails.databinding.BindingFormat
类Person {
@BindingFormat('MMddyyyy')
Date birthDate
}
Grails版本< 2.3
我不能,也不会相信用手提取日期是必要的!
< blockquote>
您的顽固性得到了回报,可以直接绑定一个日期早在Grails 1.3之前。步骤如下:
(1)创建一个注册日期格式编辑器的类
import org.springframework.beans.PropertyEditorRegistrar
/ pre>
import org.springframework.beans.PropertyEditorRegistry
import org.springframework.beans.propertyeditors.CustomDateEditor
import java.text.SimpleDateFormat
public class CustomDateEditorRegistrar实现PropertyEditorRegistrar {
public void registerCustomEditors(PropertyEditorRegistry registry){
String dateFormat =' yyyy / MM / dd'
registry.registerCustomEditor(Date,new CustomDateEditor(new SimpleDateFormat(dateFormat),true))
}
}
(2)通过注册
grails-app / conf / spring / resources.groovy
beans = {
customPropertyEditorRegistrar(CustomDateEditorRegistrar)
}
(3)格式为
yyyy / MM / dd
的名为foo
的参数将自动绑定到名为foo
使用:myDomainObject.properties = params
或
new MyDomainClass params)
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!
解决方案Grails Version >= 2.3
A setting in
Config.groovy
defines the date formats which will be used application-wide when binding params to aDate
grails.databinding.dateFormats = [ 'MMddyyyy', 'yyyy-MM-dd HH:mm:ss.S', "yyyy-MM-dd'T'hh:mm:ss'Z'" ]
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
import org.grails.databinding.BindingFormat class Person { @BindingFormat('MMddyyyy') Date birthDate }
Grails Version < 2.3
i can't and will not belief that extracting the date by hand is nessesary!
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
import org.springframework.beans.PropertyEditorRegistrar import org.springframework.beans.PropertyEditorRegistry import org.springframework.beans.propertyeditors.CustomDateEditor import java.text.SimpleDateFormat public class CustomDateEditorRegistrar implements PropertyEditorRegistrar { public void registerCustomEditors(PropertyEditorRegistry registry) { String dateFormat = 'yyyy/MM/dd' registry.registerCustomEditor(Date, new CustomDateEditor(new SimpleDateFormat(dateFormat), true)) } }
(2) Make Grails aware of this date editor by registering the following bean in
grails-app/conf/spring/resources.groovy
beans = { customPropertyEditorRegistrar(CustomDateEditorRegistrar) }
(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:myDomainObject.properties = params
or
new MyDomainClass(params)
这篇关于从控制器中的params绑定Grails日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!