我有一个名为WorkOrder的Spring Roo mvc项目。我使用Roo shell为这个模型生成两个finder: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
什么决定了这些网址的生成方式?两个查找器之间的代码实际上是相同的,为什么它们会以不同的格式生成日期?
答案 0 :(得分: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属性。
答案 1 :(得分:0)
我发现这是一种肮脏的方法来解决它..:P
只需更改您所在字段的dateTimePatern属性即可
findWorkOrdersByDateCompletedBetween.jspx
到你所拥有的那个
的 findWorkOrdersByDateCompletedEquals.jspx 强>
我把它改成了
field:datetime dateTimePattern =“$ { tramite_fecha_date_format }”