2010-08-11 2 views
3

Я работаю над старым веб-приложением, которое использует Struts 1.1. Чтобы сделать бизнес-валидации (сложные проверки с использованием нескольких свойств формы и вызывать вспомогательные службы), я написал реализацию ActionForm, которая вызывает цепочку валидаторов в методе ActionForm.validate.Обработка исключений в Struts 1 ActionForm

Цепочка валидаторов реализована с использованием цепочки общин. Все хорошо, за исключением того, что когда исключение встречается в ActionForm.validate, оно не захватывается обработчиком исключений struts, вместо этого на экране отображается стек. Обработчик исключений struts не понимает, что

Есть ли все-таки, чтобы избежать stacktrace на странице и распространять исключение на обработчик исключений struts?

Благодаря

ответ

1

Может быть, это лучшее, что валидаторы не бросать исключения на всех. Валидации - это проверка пользовательских входов против ограничений, таких как minChars, maxChars, сила/проверка пароля, синтаксическая правильность электронной почты, isNumber и т. Д. Если валидатор терпит неудачу, он должен только возвращать false - никогда не бросать исключение. См. Примеры в http://struts.apache.org/1.2.4/userGuide/dev_validator.html

Если ваш валидатор вызывает функции бэкэнда ... что-то не так - я думаю. Валидатор должен только добавлять полевые ошибки.

Если в результате синтаксических правильных входов (например, неправильного пользователя/пароля для входа в систему) возникают ошибки, то ваше приложение struts (ваши действия) должно обрабатывать это и возвращать ошибки действий пользователю. Это можно сделать, перенаправляя страницы ошибок при сброшенных исключениях (UserNotLoggedInException).

+0

Я не хотел загрязнять методы действия с помощью бизнес-валидации. Вот почему они были вызваны из цепочки валидации. Исключения исключены обработчиком исключений Struts, но они попадают на страницы ошибок, заданные в web.xml. Спасибо за ответ. –