Struts 2 и ModelDriven: плагин jQuery и плагин Dojo
Я использую Struts2 с ModelDriven
для отправки формы.
Когда я использую datetimepicker
тег Dojo и выберите дату из этого тега, форма отправляется правильно со значениями формы, заполненными в ModelDriven
объект.
Но когда datepicker
тег jQuery берется в форму и выбирается дата объекта ModelDriven
имеют нулевые значения. Если дата не выбрана и форма отправлена, то она работает нормально.
Требуются ли какие-либо настройки, которые я пропустил для решения проблемы?
Я включил следующую банку для JQuery.
JQuery:
<sx:datepicker name="startDate" id="startDate" label="" cssStyle="width:275px; "
minDate="0" displayFormat="dd/mm/y" changeMonth="true" changeYear="true"
readonly="true" value="%{startDate}"/>
4 ответа
Удалить readonly="true"
и все будет работать нормально.
readonly
атрибут по умолчанию false
говорит, что вход только для чтения.
Я уверен, что
name="startDate"
следует изменить на
name="yourmodel.startDate"
Показать больше кода для лучшей помощи...
Проблема заключалась в том, что Dojo принимает значение даты в JSP как Date в java, тогда как JQuery принимает его как строку.
И поэтому распорки находил setDate(String)
и не setDate(Date)
для JQuery.
Struts ожидает, что значение будет отправлено на сервер как значение, не зависящее от локали, в соответствии с RFC3 339 (гггг-MM-dd'T'HH: мм: сс), это то, что предоставляет тег dojo по умолчанию (теперь устаревший): http://struts.apache.org/2.0.12/docs/datetimepicker.html
Вы можете просто отправить: 2013-01-03 остальное необязательно.
JQuery Datepicker I использует мм / дд / гг. Чтобы изменить этот формат на ожидаемый Struts2, либо измените формат по умолчанию, используемый для презентации, либо установите altFormat, который изменяет то, что было введено, в формат, представленный во время отправки (так что если вам нравится "mm / dd / yy", вы можете просто установить altFormat в "yyyy-"). мм-дд "и получите желаемый эффект).
http://jqueryui.com/datepicker/
http://api.jqueryui.com/datepicker/
Как вы можете видеть, jQuery легко обеспечивает это, как это сделать с тегом... Я не знаю. Кто-то другой может взять эту информацию и расширить ее в другом ответе, если возможно, с помощью специальной техники тегов.