0

我有一个 Spring Roo mvc 项目,带有一个名为 WorkOrder 的模型。我使用 Roo shell 为这个模型生成了两个查找器:findWorkOrdersByDateCompletedEquals 和 findWorkOrdersByDateCompletedBetween。

问题:当我使用 findWorkOrdersByDateCompletedBetween 搜索时,url 中的 minDateCompleted 和 maxDateCompleted 参数格式错误(S-格式)

.../workorders?find=ByDateCompletedBetween&minDateCompleted=2012-05-08&maxDateCompleted=2012-05-31

这是调试日志中的错误:

Failed to convert from type java.lang.String to type 
@org.springframework.web.bind.annotation.RequestParam
@org.springframework.format.annotation.DateTimeFormat java.util.Date for value '2012-05-15';

有趣的是 findWorkOrdersByDateCompletedEquals 工作得很好,并生成这样的 url:

.../workorders?find=ByDateCompletedEquals&dateCompleted=May+30%2C+2012

是什么决定了这些 URL 是如何生成的?两个查找器之间的代码几乎相同,为什么它们会生成不同格式的日期?

4

2 回答 2

1

我发现了真正的问题,它看起来像是 Spring roo 的一个错误。控制器 .aj 文件中有一个 Roo 没有更新的方法:

void addDateTimeFormatPatterns(Model uiModel) {
    uiModel.addAttribute("workOrder_datecompleted_date_format", DateTimeFormat.patternForStyle("M-", LocaleContextHolder.getLocale()));
    uiModel.addAttribute("workOrder_maxdatecompleted_date_format", DateTimeFormat.patternForStyle("M-", LocaleContextHolder.getLocale()));
    uiModel.addAttribute("workOrder_mindatecompleted_date_format", DateTimeFormat.patternForStyle("M-", LocaleContextHolder.getLocale()));
}

Roo 自动将“workOrder_datecompleted_date_format”属性放在那里,但我必须自己推入方法并添加 maxdatecompleted 和 mindatecompleted 属性。

于 2012-05-30T20:47:31.510 回答
0

我发现解决它的方法很肮脏..:P

只需更改您在
findWorkOrdersByDateCompletedBetween.jspx中的字段的 dateTimePatern 属性

到您在
findWorkOrdersByDateCompletedEquals.jspx中的那个

就我而言,它类似于
field:datetime dateTimePattern="${ tramite_maxfecha_date_format }" [...]

我将其更改为
字段:datetime dateTimePattern="${ tramite_fecha_date_format }"

于 2012-05-30T18:26:41.223 回答