У меня есть форма с полем, в котором используется средство выбора даты / времени, которое создает скрытое поле с полной датой и временем в британском формате дд / мм / гг ЧЧ: мм через использование JavaScript. Это передается в действие struts2, в котором есть методы получения и установки для поля с операцией над java.util.Date.
В JSP:
<s:form>
...
<input type="hidden" name="myDate" value="08/05/11 16:00" />
<s:submit />
</s:form>
В действии
public class MyAction
{
public void setMyDate(Date d)
{
this.d = d;
}
public Date getMyDate()
{
return d;
}
}
Как и ожидалось в Firefox, когда я отправляю формы, автоматически разбирает дату, и в результате получается объект Date в действии с правильной датой.
Однако в Google Chrome, когда я отправляю форму, дата анализируется, как если бы она была в американском формате ММ / дд / гг ЧЧ: мм , и в результате я получаю 5 августа вместо 8 мая .
Проверка заголовков HTTP, отправленных обоими браузерами, показывает, что, несмотря на то, что мой язык операционной системы установлен на en_GB, Google Chrome по-прежнему отправляет заголовок «Accept-Language» как en_US, что означает, что Struts должен использовать это, чтобы определить, какой формат даты использовать.
Я могу только предположить, что это ошибка в Google Chrome, однако, учитывая, что у меня нет свободы исправлять Google Chrome, есть ли способ в Struts 2, чтобы я мог указать фиксированный формат даты, который сообщает Struts формат, который должен использовать для разбора дат в параметрах формы?