Вопрос

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top