Какого типа должны быть свойства Struts ActionForm? - PullRequest
6 голосов
/ 16 октября 2008

Я унаследовал это гигантское унаследованное веб-приложение на Java с помощью Struts 1.2.4. У меня есть конкретный вопрос относительно ActionForms. Некоторые из них имеют только свойства String (даже для чисел), некоторые из них используют, казалось бы, соответствующие типы (Integer, Date, String и т. Д.). Какая лучшая практика здесь?

Кроме того, кажется, что если свойство имеет тип Integer, а введенное пользователем значение не является целочисленным, Struts молча проглатывает это и просто не устанавливает свойство. Что с этим?

Ответы [ 2 ]

5 голосов
/ 16 октября 2008

Для Struts 1.2x свойства, в которых пользователь вводит или выбирает значения в форме HTML и которые автоматически заполняются в экземпляре ActionForm тегами HTML Struts, должны быть строками или логическими значениями. Однако нет никаких причин, по которым ваша ActionForm не может иметь методы получения, которые возвращают свойства как более значимые типы для вашего приложения, например Дата.

3 голосов
/ 16 октября 2008

Если вы хотите выполнить некоторую проверку самостоятельно (или использовать функции проверки распорок, которые были реорганизованы из распорок более поздних версий, чем 1.2), вам понадобятся свойства String именно по той причине, по которой вы цитируете: как только вы сохраните числовые значения в Integer или значения int, они должны быть либо числами, либо "вообще ничего" - иначе: как бы вы хранили "много" (в буквальном смысле) в свойстве Integer?

Проверка на стороне клиента (например, в Javascript) все еще будет работать, но вы не хотите на это полагаться.

Если - при вводе неверного номера - вы согласны с тем, что пользователю представляется пустое поле, вы можете хранить значения в свойствах Date-, Integer-, Wh бы то ни было. Если вы хотите представить исходное значение в сообщении об ошибке, вам понадобится свойство String.

Здесь указана цена, которую вам нужно сделать вручную. Поскольку Struts 1.2 довольно старый, вы можете подумать о постепенной замене инфраструктуры приложений более современной технологией и работать на двух технологиях (старой и новой) одновременно, пока старая часть не станет достаточно маленькой (или неважной). достаточно) быть уроненным.

nb - вы также получаете больше контроля над тем, какие значения вы хотите принять в качестве чисел. Я до сих пор помню старое приложение для банковских карт в Struts, в котором я спросил моего менеджера, каков ожидаемый результат, когда вы захотите снять 3e2 евро с вашей карты. Они не сказали 300 (как преобразовал Struts), но выбрали ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...