Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Client & server side validation / 24 сообщений из 24, страница 1 из 1
23.06.2005, 01:28
    #33130146
ффф
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Client & server side validation
struts-config.xml
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<struts-config>
    <form-beans>
        <form-bean name="in" type="ecologist.action.InForm" />
    </form-beans>
    <action-mappings>
        <action path="/in" type="ecologist.action.InAction" scope="request" name="in" input="/in.jsp" validate="true" >
            <forward name="failure" path="/in.jsp" />
            <forward name="success" path="/in.do" />
        </action>
    </action-mappings>
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
        <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
    </plug-in>
</struts-config>

InForm.java
Код: plaintext
1.
2.
3.
4.
5.
6.
 public   class  InForm  extends  ValidatorForm {
...
 public  ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
...
}
}

почему не вызывается метод validate(...) в InForm.java ?
...
Рейтинг: 0 / 0
23.06.2005, 11:51
    #33130804
johanna
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Client & server side validation
а вам не надо вызывать метод validate в форме. это делает валидатор сам, руководствуясь файлами :validator-rules.xml, validation.xml
вам нужно только заполнить validation.xml
...
Рейтинг: 0 / 0
23.06.2005, 14:58
    #33131430
ффф
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Client & server side validation
johannaа вам не надо вызывать метод validate в форме. это делает валидатор сам, руководствуясь файлами :validator-rules.xml, validation.xml
вам нужно только заполнить validation.xml

нет, ну ясное дело что он сам должен вызываться, только он не вызывается. валидатор работает, а вот метод validate не вызывается...
не могу никак понять почему...
...
Рейтинг: 0 / 0
23.06.2005, 15:04
    #33131451
johanna
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Client & server side validation
не, я имею ввиду, chto этот метод в форме(ActionForm) вызывается только без плагина валидатора. поэтому метод validate в вашей форме вобще не нужен.
если вы не пользуетесь plugin валидатором, тогда другое дело, тогда вызывается метод validate формы.
...
Рейтинг: 0 / 0
23.06.2005, 15:15
    #33131493
ффф
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Client & server side validation
johannaне, я имею ввиду, chto этот метод в форме(ActionForm) вызывается только без плагина валидатора. поэтому метод validate в вашей форме вобще не нужен.
если вы не пользуетесь plugin валидатором, тогда другое дело, тогда вызывается метод validate формы.

хм... тогда всё понятно.
а как тогда сдалать проверку введённых данных на стороне сервера?
...
Рейтинг: 0 / 0
23.06.2005, 15:17
    #33131499
johanna
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Client & server side validation
in Action
...
Рейтинг: 0 / 0
23.06.2005, 15:21
    #33131511
ффф
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Client & server side validation
johannain Action

ок. спасибо.
...
Рейтинг: 0 / 0
23.06.2005, 16:00
    #33131632
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Client & server side validation
johanna wrote:
> не, я имею ввиду, chto этот метод в форме(ActionForm) вызывается только
> без плагина валидатора. поэтому метод validate в вашей форме вобще не нужен.
> если вы не пользуетесь plugin валидатором, тогда другое дело, тогда
> вызывается метод validate формы.

У меня этот метод вызывается в любом случае, и с плагином, и без него. Т.е. при желании можно поместить проверку данных
в 3-х местах: у клиента через javascript, в ValidatorForm.validate() и Action.execute().
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
23.06.2005, 16:06
    #33131658
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Client & server side validation
Denis Popov
У меня этот метод вызывается в любом случае, и с плагином, и без него.

Точнее, зависит от следующего, фрагмент struts-config.xml:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    
<action path="/testGo"
        type="hall.action.TestGoAction"
        name="testForm"
        scope="request"
        validate="true" 
        input="/struts/testForm.jsp">
</action>

Если поставить validate="false", то ValidatorForm.validate() вызываться не будет.
...
Рейтинг: 0 / 0
23.06.2005, 16:52
    #33131819
johanna
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Client & server side validation
правильно этот метод вызывается в ValidatorForm. Но если вы в своей форме имплеминтируете validate,то этим вы переписываете
validate в ValidatorForm. Т.е. если вы в своей форме MyForm пользуетесь validate, то вам самим надо заботиться о том, чтоб validator byl vyzvan
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
  public  ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
/* 143*/        javax.servlet.ServletContext application = getServlet().getServletContext();
/* 144*/        ActionErrors errors =  new  ActionErrors();
/* 146*/        Validator validator = Resources.initValidator(mapping.getAttribute(),  this , application, request, errors, page);
/* 152*/         try  {
/* 152*/            validatorResults = validator.validate();
                }
/* 154*/         catch (ValidatorException e) {
/* 154*/            log.error(e.getMessage(), e);
                }
/* 157*/         return  errors;
            }
вот эти все надо в свой метод засовывать
ну и вобще, если пользоваться валидатором, то к чему на форме какие то валидирунги производить? Все, что касается business logic в форму не относитcя,
все остальное может проверить валидатор
...
Рейтинг: 0 / 0
23.06.2005, 17:18
    #33131903
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Client & server side validation
johannaправильно этот метод вызывается в ValidatorForm. Но если вы в своей форме имплеминтируете validate,то этим вы переписываете
validate в ValidatorForm. Т.е. если вы в своей форме MyForm пользуетесь validate, то вам самим надо заботиться о том, чтоб validator byl vyzvan

Можно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 public  ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
    // Perform validator framework validations
    ActionErrors errors =  super .validate(mapping, request);
    MessageResources resources = ((MessageResources) request.getAttribute(Globals.MESSAGES_KEY))
     if  ( this .label ==  null  || "".equals( this .label)) {
      errors.add(
        ActionMessages.GLOBAL_MESSAGE,  new  ActionMessage(
          "errors.required", resources.getMessage("testForm.label")
        )
      );
    }
     return  errors;
  }
Это для примера, проверяется обязательность атрибута label. Но это же самое (обязательность) можно проверить еще на самой странице, а здесь предоставляется возможность провести более сложные проверки.

johanna
ну и вобще, если пользоваться валидатором, то к чему на форме какие то валидирунги производить? Все, что касается business logic в форму не относитcя, все остальное может проверить валидатор
Для вызова этого метода нужно, чтобы данные формы как минимум были посланы на сервер, ошибка же при проверке на странице обломает сам submit формы, сервер об этом не узнает и лишний раз не "напряжется":)
Код: plaintext
1.
<html:form action="/testGo" onsubmit="return validateTestForm(this)">
...
Рейтинг: 0 / 0
23.06.2005, 17:34
    #33131946
johanna
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Client & server side validation
какие более сложные проверки?
более сложные проверки на business logic можно на Action сделать, куда они и принадлежат.
со всем остальным валидатор прекрасно справляется
...
Рейтинг: 0 / 0
23.06.2005, 17:44
    #33131972
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Client & server side validation
johannaкакие более сложные проверки?
более сложные проверки на business logic можно на Action сделать, куда они и принадлежат.
со всем остальным валидатор прекрасно справляется
"более сложные проверки" по сравнению с клиентским javascript'ом. Я сейчас так и делаю: что-то через javascript на самой форме, что-то в Action.execute(). Form.validate() пока не пользуюсь, поскольку как-то не сформулировалось представление, будет ли лучше, если что-то перенесется из execute() в validate(). В любом случае это уже проверки на серверной стороне, клентский javascript на форме их дополняет, и все это может использоваться одновременно.
...
Рейтинг: 0 / 0
23.06.2005, 17:51
    #33131984
johanna
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Client & server side validation
проверка в Action это и есть серверная сторона, и если пользовать плагином, то не стоит нагромождать огород и начинать имплементировать метод
validate in MyForm.
Нарушается принцип responsibility-кто за что отвечает, а это уже не очень красивый дизайн написанной программы.
...
Рейтинг: 0 / 0
24.06.2005, 00:11
    #33132366
ффф
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Client & server side validation
не могу понять что я делаю не так. почему у меня не вызывается ни Action.execute, ни ValidatorForm.validate?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 public   class  InAction  extends  Action {
         public  ActionForward execute(
        ActionMapping mapping,
        ActionForm form,
        HttpServletRequest request,
        HttpServletResponse response) {

             return  mapping.findForward("failure");
        }
}

тут всё равно что вставлять "failure" или "success" - результат одинаковый...

может кто мой проект целиком глянет?
...
Рейтинг: 0 / 0
24.06.2005, 00:32
    #33132375
johanna
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Client & server side validation
давай,
завтра утром посмотрю, сейчас уже поздно :)
...
Рейтинг: 0 / 0
24.06.2005, 01:02
    #33132385
ффф
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Client & server side validation
куда давать то? :)
...
Рейтинг: 0 / 0
24.06.2005, 10:45
    #33132786
johanna
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Client & server side validation
да хоть на мыло, хоть сюда куски выложи: struts-config.xml, ActionForm, Action, jsp etc.
...
Рейтинг: 0 / 0
24.06.2005, 14:19
    #33133518
johanna
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Client & server side validation
отвечу завтра если успею, сейчас к сожалению времени нет.
...
Рейтинг: 0 / 0
27.06.2005, 12:11
    #33135929
Jlexa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Client & server side validation
У меня какие-то глюки с версией validator plugin. Почему-то мой struts 1.2.7 при разборе validator.xml выдаёт сообщения об таких ошибках, как будто он понимает только validator 1.0 :\

Как известно, версия 1.0 не поддерживает resource bundles, в версиях 1.1.3 и 1.2.0 с эти гораздо лучше. Проще говоря, в 1.0 пишут
<arg0 key="key.yo"/>
а в 1.1 -
<arg bundle="best.bundle" key="key.yo" position="0"/>
Разница очевидна.

В том и вопрос: как подключить версию Validator > 1.0? Или, может,и в этой версии можно как-то выдавать сообщения, лежащие не в application.properties?
...
Рейтинг: 0 / 0
27.06.2005, 15:10
    #33136518
riman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Client & server side validation
/topic/150154&hl
попробуй изменить названия паблик ресурсов.

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
27.06.2005, 16:43
    #33136775
Jlexa_guest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Client & server side validation
riman
/topic/150154&hl
попробуй изменить названия паблик ресурсов.

Posted via ActualForum NNTP Server 1.2
Цитата из validator.xml
<!DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">

DTD для 1.0 у меня на компьютере вообще нет. Хотелось бы знать, откуда он её берёт. :\\
...
Рейтинг: 0 / 0
28.06.2005, 09:01
    #33137384
riman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Client & server side validation
Цитата из validator.xml
<!DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration
1.0//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">

DTD для 1.0 у меня на компьютере вообще нет. Хотелось бы знать, откуда он её
берёт. :\
а так:

<!DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons Validator Rules
Configuration 1.1.3//EN"

"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
29.06.2005, 12:09
    #33140027
Jlexa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Client & server side validation
riman: а так работает, спасибо. Умудрился не заметить, что это тоже нужно исправить.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Client & server side validation / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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