Grails - 控制器中的日期绑定

3
我正在尝试在我的控制器中绑定日期参数。我在某个地方读到,如果我按照格式yyyy-MM-dd HH:mm:ss.S提供日期就足够了。但这并不起作用。另一个选项是添加_day_month_year等后缀到要解析的属性上,但这种方法也不起作用。
所以基本上是一对多的关系,当多的一侧是日期时(一个Action有一个VisitList<Visit>,而Visit有日期)。
// domain classes
class Action {
   List<Visit> visitList
   static hasMany = [visitList: Visit]
}

class Visit {
   Action action 
   static belongsTo = [action: Action]

   Date date
   String description
}

我这样将所有参数解析到操作实例中:

我这样将所有参数解析到操作实例中:

// in controller
def save(){
   Action actionInstance = new Action()
   action.properties = params
   action.save()
}

日期是从视图发送的,格式如下:
visitList[0].date=2012-05-15 00:00:00.0000

但是日期仍然为空。访问还有一个描述属性,它运作良好。该属性的参数为:

visitList[0].description=description

感谢任何建议或意见。
2个回答

1
你尝试过先保存“Visit”,然后再保存“Action”吗?如果这样不行,你可能需要将日期从字符串转换为日期格式。在Grails 2.0中,“Date.parse()”方法已经被弃用了,可以尝试使用以下方法:
Date date = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(dateString)
def action = new Action()
def visit = new Visit(date: date, description: description?:"", action: action)
visit.save()
action.visitList.add(visit)
action.save()

-祝好


谢谢。我想同时保存它并使用“action.params = params”或类似的方式解析所有属性。 - Lojza Ibg
被弃用的Date.parse()是Java方法,它接受一个字符串参数。而Groovy方法Date.parse()则接受两个参数,且绝对没有被弃用。 - ataylor

0

没有看到更多的代码很难判断。你可能想尝试使用命令对象。你的输入来自哪里?视图吗?如果是这样,通常使用标签来控制输入。如果你没有使用它们,你可能需要手动解析日期,使用DateFormat {提示,使用parse()方法}。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接