Дата или строковая декларация в javabean - PullRequest
0 голосов
/ 07 июня 2010

Должен ли я объявить атрибут в javabean, который содержит значение даты, которое пользователь вводит в форму HTML как строку или дату?

Я чувствую, что должен объявить как Дата, однако, поскольку я выполняю проверку сервера на всех данных формы, если дата не проверяется, когда я передаю компонент формы обратно в представление jsp для исправления, я теряю дату значение, которое пользователь пытался ввести.

Если я объявляю как String, если дата не проверяется, я могу установить строковое значение в bean-компоненте и передать bean-компонент обратно в представление, и пользователь может видеть, что они неправильно напечатали.

Но с помощью строковой декларации для ввода даты я предвижу проблемы в будущем с моим DAO. Я хочу использовать утилиту DAO, которая генерирует оператор подготовки с использованием setObject.

В моей html-форме я запрашиваю даты в мм / дд / гггг, а в DAO я использую Oracle Date. Я не могу использовать Hibernate или что-то подобное, так как это корпоративная интрасеть.

Каков наилучший практический «образец», которому я должен следовать ??

Ответы [ 3 ]

1 голос
/ 04 августа 2010

Просто сохраните его как Date в модели. Вы можете использовать условный оператор в EL для отображения переданного значения вместо значения модели всякий раз, когда значение модели отсутствует.

<input name="date" value="${empty bean.date ? fn:escapeXml(param.date) : bean.date}" />

JSTL fn:escapeXml() только для того, чтобы избежать XSS атак .

Чтобы продвинуться дальше, вы можете добавить дополнительный слой с Map<String, Object> params, который содержит либо отправленное значение, либо окончательное / проверенное значение в зависимости от результата проверки.

<input name="date" value="${fn:escapeXml(bean.params.date)}" />
0 голосов
/ 07 июня 2010

Использование маски javascript для предотвращения попадания непарсируемой даты на сервер - это наиболее распространенный шаблон, который я видел для этого.Вы также можете найти множество средств выбора даты в библиотеках JavaScript с открытым исходным кодом.Если кто-то знает достаточно, чтобы отключить JavaScript или иным образом победить проверку на стороне клиента, он, вероятно, может столкнуться с тем, что не сможет вернуть свои неразборчивые строки даты в представление ошибок.

0 голосов
/ 07 июня 2010

Просто храните оба. Он приходит как строка, так что сохраните это где-нибудь. Затем подтвердите это. Если это не удается, передайте исходную строку на страницу jsp.

...