私は次の(骨に簡略化された)コントローラーを持っています:
@Controller
public class TestController {
@RequestMapping(value = "/test.htm", method = RequestMethod.GET)
public String showForm(final ModelMap map) {
final TestFilter filter = new TestFilter();
filter.setStartDate(new Date(System.currentTimeMillis()));
map.addAttribute("reportPerResourceForm", filter);
return "test";
}
@InitBinder
public void initBinder(final WebDataBinder binder) {
binder.registerCustomEditor(Date.class, null, new CustomDateEditor(new SimpleDateFormat("dd/MM/yyyy"), true));
}
}
jsp:
<form:form commandName="reportPerResourceForm" id="reportForm">
<form:input path="startDate" />
</form:form>
これは、別のビュー コントローラーで発生した問題をテストするために、すぐに作成したコントローラーです。コントローラでわかるように、CustomeDateEditor が定義されています。私の実際のコントローラーでは、このエディターは正常に動作しています。たとえば、フォーム フィールドに 11/01/2010 と入力すると、これはエディターによって適切に日付に変換されます。また、フォームに戻ると、日付は再び文字列にうまく変換されました。
ただし、(TestController のように) フォームにデフォルトの日付を設定したい場合は、CustomDateEditor.getAsText() からの戻り値を使用する代わりに、フォーム フィールドに Date.toString() を表示するだけです! いくつかのデバッグの後、RequestMethod == GET の場合に InitBinder メソッドが呼び出されないことがわかりました。これは正常ですか?
使用しないことでこれを回避できると確信しています
助けてくれてありがとう、
スタイン