0

WorkOrderというモデルを使用するSpringRoomvcプロジェクトがあります。Rooシェルを使用して、このモデルの2つのファインダー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がどのように生成されるかを決定するものは何ですか?コードは2つのファインダー間で実質的に同一ですが、なぜ異なる形式で日付を生成するのでしょうか。

4

2 に答える 2

1

私は本当の問題を見つけました、それはSpringrooのバグのようです。コントローラの.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 }"[...]のようなものでした。

そしてそれを
field:datetime dateTimePattern = "${ tramite_fecha_date_format }"に変更しました

于 2012-05-30T18:26:41.223 に答える