- Один сервер А работает на JBoss EAP6/Windows/США
- Другое сервер B, работающий на Jboss EAP6/Linux/Южная Америка
Приложение текущей пружины имеет страницу пользовательского интерфейса, которая передает поле выбора даты, когда нажимает кнопку «Отправить», этот объект даты переходит на следующую страницу как поле java bean.
Сейчас ситуация:
Сервер работает эта форма отлично без проблем, но исключение броска сервер B, когда представить:
nested exception is java.lang.IllegalArgumentException:
Unparseable string: [Unparseable date: "Wed May 29 16:34:58 ART 2013",
Unparseable date: "Wed May 29 16:34:58 ART 2013"]]
Кажется сервер B не знает, как обрабатывать формат данных в Wed May 29 16:34:58 ART 2013
, даже я добавить @initBinder
@InitBinder
public void registerDateBinder(WebDataBinder binder) {
DateFormat printFormat = new SimpleDateFormat(DateTimeFormat.patternForStyle("S-", LocaleContextHolder.getLocale())); // format for joda time dojo UI
printFormat.setLenient(false);
DateFormat sortFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy" , LocaleContextHolder.getLocale()); // format for whatever return from form
sortFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new ExpandableCustomDateEditor(printFormat, Arrays.asList(printFormat, sortFormat), true));
}
ExpandableCustomDateEditor
упоминается из this статьи
Интересная часть выше проблема возникает, когда эта дата объект является полем бина
public String showSecondView(Form aForm,
Model uiModel) {
.....
}
Но это работает без проблем в другом контроллере без @InitBinder
public String list(Model uiModel,
@RequestParam(value = "fromDate", required = false) Date fromrDate,
.....)
....
}
Но как же эта ошибка все еще случается, даже с этим @initBinder? Я сделал post раньше и кажется, что платформа имеет другой способ перевести код timezone
, но Spring, я думаю, что он способен поддерживать интернационализацию правильно?