Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Struts. Валидация динамической формы / 5 сообщений из 5, страница 1 из 1
05.10.2006, 18:52:50
    #34035876
iis
iis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Struts. Валидация динамической формы
Использую Struts 1.2.9.
Форма редактирования формируется динамически. Т.е. нельзя заранее определить набор параметров в запросе. Хотя на каждый параметр валидацию установить необходимо. Подскажите как это можно сделать?
А то уже думаю расширять
Код: plaintext
org.apache.struts.validator.ValidatorForm
http://www.sql.ru/forum/images/happy.gif
...
Рейтинг: 0 / 0
05.10.2006, 19:15:56
    #34035916
iis
iis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Struts. Валидация динамической формы
Форма ввода создается с помощью XML+XSLT в зависимости от прав пользователя скрываются определенные поля и тп. Валидатор при проверке, если какой-либо параметр отсутствует в запросе (а для поля прописано "required") ведет себя так как-будто это поле не заполнено. Нужно чтоб такие поля не учавствовали в валидации.
...
Рейтинг: 0 / 0
06.10.2006, 16:23:42
    #34038352
iis
iis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Struts. Валидация динамической формы
Все разобрался. Если кого интересует могу рассказать. Пришлось смотреть в код валидатора, иначе никаких шансов :-)
...
Рейтинг: 0 / 0
06.10.2006, 17:36:25
    #34038640
Макарон
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Struts. Валидация динамической формы
поделись плиз решением...
...
Рейтинг: 0 / 0
09.10.2006, 09:26:46
    #34040678
iis
iis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Struts. Валидация динамической формы
Макаронподелись плиз решением...
Конечно. Не жалко :-)
Все просто. Берем
Код: plaintext
org.apache.struts.validator.LazyValidatorForm
. Расширяем ее: переопределяем метод validate, таким образом:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
     public  ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {


        String validationKey = getValidationKey(mapping, request);
        ServletContext context = getServlet().getServletContext();
        ActionErrors errors =  new  ActionErrors();
        Validator validator =
                Resources.initValidator(validationKey,  this , context, request, errors,  0 );

        log.debug("Validate key = " + getValidationKey(mapping, request));
        Enumeration en = request.getParameterNames();

             while  (en.hasMoreElements()) {
                String paramName = (String)en.nextElement();
                validator.setFieldName(paramName);
                log.debug("Set parameter " + paramName + "for validate");
                 try  {
                    validator.validate();
                }  catch  (ValidatorException e) {
                    e.printStackTrace();
                    log.error(e.getMessage(), e);
                }
            }

         return  errors;
    }
И этот класс указываем в аттрибуте type тега form-bean файла struts-config.xml
Конечно, не самое оптимальное решение. Есть куда улучшать :-) Может кто подскажет более удачное решение.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Struts. Валидация динамической формы / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]