gpt4 book ai didi

grails - 将日期绑定(bind)到 Grails 中的命令对象

转载 作者:行者123 更新时间:2023-12-04 09:50:48 24 4
gpt4 key购买 nike

我有一个日期(作为字符串)被提交。我想将此映射到命令对象。我环顾四周,发现没有很好的资源来说明如何在命令对象中将此映射到实际日期。

如果我要在 Controller 本身中执行此操作,我可以执行以下操作,但这不允许我轻松映射到我的命令对象。

def endDate = params.date('endDate', 'MM/dd/yyyy')

对于我的命令对象,我能得到的最接近的是覆盖日期对象的 getter 和 setter。两者都需要被覆盖,否则不使用 setter 。这是我第一次尝试的(将字符串设置为日期,但获取日期)。所以这不使用setter:
@grails.validation.Validateable
class TaskCreateCommand {

Date startDate


public void setStartDate(String dateStr){
this.start = Date.parse('MM/dd/yyyy', dateStr)
}

}

这不会产生任何运行时问题,但没有用,因为我无法提取实际的 Date 对象。
@grails.validation.Validateable
class TaskCreateCommand {

Date startDate


public void setStartDate(String dateStr){
this.start = Date.parse('MM/dd/yyyy', dateStr)
}

public String getStartDate(){
return start.toString()
}
}

最佳答案

如果您使用 Grails 2.3 或更高版本,您可以在 Config.groovy 中添加多种自定义日期格式以进行数据绑定(bind)

grails.databinding.dateFormats = ["MM/dd/yyyy"]

然后当 Grails 尝试将请求参数绑定(bind)到 Command 对象属性时,将在解析请求参数中的日期字符串时尝试您的自定义格式,例如。
class MyController {
def myAction(MyCommandObject cmd) {
println cmd.date
println cmd.date.class
}
}

class MyCommandObject {
Date date
}

然后当你打例如。
http://localhost:8080/myController/myAction?date=12/13/2013

你应该看到类似 ->
Fri Dec 13 00:00:00 EST 2013
class java.util.Date

在您的控制台上。

关于grails - 将日期绑定(bind)到 Grails 中的命令对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17241914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com