假设我有一个名为“foobar”的日期选择器:
<g:datePicker name="foobar" value="${new Date()}" precision="day" />
如何读取此日期选择器的提交值?
一种有效但有一些不良副作用的方法如下:
def newObject = new SomeClassName(params)
println "value=" + newObject.foobar
这种方式将所有提交的字段读入 newObject,这是我想避免的。我只对“foobar”字段的值感兴趣。
我最初认为可以做到这一点的方式是:
def newObject = new SomeClassName()
newObject.foobar = params["foobar"]
但 Grails 似乎不会自动将 foobar 字段转换为 Date() 对象。
已更新: 更多信息可在 Grails JIRA 中找到.
最佳答案
使用 command object成语。对于您的示例,我假设您的表单调用操作 handleDate
。 Controller 内部:
def handleDate = { FoobarDateCommand dateCommand ->
def theNextDay = dateCommand.foobar + 1
}
这是 FoobarDateCommand
。请注意如何将字段命名为与 View 中相同的名称:
class FoobarDateCommand {
Date foobar
}
命令对象是封装每个表单的所有验证任务的便捷方式,使您的 Controller 保持美观和小巧。
关于grails - 读取 g :datePicker-value in Grails without using the "new Object(params)"-method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/534330/