Struts
От: _Patriot_  
Дата: 16.02.06 19:22
Оценка:
Может кто подскажет как проверить input поля с помощьй struts — validate, причем поля заранее не заданы (формируются динамически), вобщем поля — классы String в ArrayList. Проверка самая простая — заполенено ли поле или нет, проверка должна быть на стороне клиента, т.е. метод validate использовать нельзя


16.02.06 22:48: Перенесено модератором из 'Работа: Поиск и Предложение' — Кодт
Re: Struts
От: slskor  
Дата: 17.02.06 03:37
Оценка:
Здравствуйте, _Patriot_, Вы писали:

_P_>Может кто подскажет как проверить input поля с помощьй struts — validate, причем поля заранее не заданы (формируются динамически), вобщем поля — классы String в ArrayList. Проверка самая простая — заполенено ли поле или нет, проверка должна быть на стороне клиента, т.е. метод validate использовать нельзя


Ну, поскольку проверка должна быть на стороне клиента, то struts и егоный validate тут совсем не при чем. Необходимо написать функцию на JavaScript, которая должна пробежать по DOM внутри формы, найти все поля типа <input type="text"> и проверить у них value. Затем эта функция вешается на onSubmit формы.
Re: Struts
От: Yarrow  
Дата: 17.02.06 07:30
Оценка:
_P_>Может кто подскажет как проверить input поля с помощьй struts — validate, причем поля заранее не заданы (формируются динамически), вобщем поля — классы String в ArrayList.

Проверить такую форму _автоматически_ — с помощью Struts-validate без использования метода validate в Action — можно. Но проверка все-равно будет на стороне сервера, даже если JavaScript подключите. Т.е. вместо popup-окошечка с ошибками вы получите сообщения, которые нужно выводить с помощью <html:errors/> (По крайней мере, Struts 1.2.7 ведет себя так. Может это баг, а может и руки.сис — поправьте тогда )

Маленький пример:

JSP:
<html:errors/>
<html:form action="/actions/manageModules">
   <logic:iterate id="module" name="modules" property="list" indexId="index">
      <bean:write name="module" property="displayName"/>
      <html:text name="module" property="developer" indexed="true"/><br>
   </logic:iterate>
</html:form>


Form-bean:
public class Modules extends ValidatorForm {
   ...
   public ConcreteModule[] getList(){
      return list;
   }
   public ConcreteModule getModule(int index){
      return list[idnex];
   }
}

public class ConcreteModule {
   ...
   public String getDisplayName(){...}
   public String getDeveloper(){...}
   public void setDeveloper(String d){...}
}



validation.xml:
<formset>
   <form name="modules">
      <field property="developer" indexedListProperty="list" depends="required,maxlength">
         <arg key="listing.developer" position="0"/>
         <arg name="maxlength" key="${var:maxlength}" resource="false" position="1"/>
         <var>
            <var-name>maxlength</var-name>
            <var-value>255</var-value>
         </var>
      </field>
   </form>
</formset>


struts-config.xml:
...
<form-beans>
   <form-bean name="modules" type="package.Modules"/>
</form-beans>
<action-mappings >
   <action
    input="/forms/listModules.jsp"
    name="modules"
    parameter="operation"
    path="/actions/manageModules"
    scope="request"
    type="package.ManageModulesAction"/>
</action-mappings>
...


В ManageModulesAction метод validate не используется.
Re[2]: Struts
От: Yarrow  
Дата: 17.02.06 07:41
Оценка:
Y>Проверить такую форму _автоматически_ — с помощью Struts-validate без использования метода validate в Action — можно.
Y>В ManageModulesAction метод validate не используется.

Прошу прощения, запамятовал
Имелся ввиду конечто метод validate из Form-bean, и что его не придется переопределять.
Re[2]: Struts
От: Аноним  
Дата: 17.02.06 17:43
Оценка:
а как на счет
<form name="ListForm">
<field property="name" indexedListProperty="list" depends="required">
</field>
</form>
помоему это подходит....
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.