У меня есть следующий (упрощенный до костей) контроллер:
@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>
Это контроллер, который я быстро создал, чтобы проверить проблему с другим view-контроллером. Как вы можете видеть в Controller, определяется CustomeDateEditor. В моем реальном контроллере этот редактор работает нормально; когда вы вводите, например, 01.11.2010 в поле формы, редактор корректно преобразует его в дату; также при возвращении к форме Дата снова была преобразована обратно в строку.
Однако, когда я (как в TestController) хочу установить в форме дату по умолчанию, тогда просто отображается Date.toString () в поле формы вместо использования возвращаемого значения из CustomDateEditor.getAsText ()! После некоторой отладки я узнал, что мой метод InitBinder не вызывается, когда RequestMethod == GET. Это нормально?
Я уверен, что мог бы обойти это, не используя
Спасибо за вашу помощь,
Стейн