On Mon, 2004-04-19 at 17:48, Joerg Heinicke wrote:
> Marc Portier <mpo <at> outerthought.org> writes:
> 
> > I do propose:
> > - some refactoring of the kind
> >    - introduce more granular methods
> >      (e.g. to call parseValue() in stead of getValue() in all occasions
> >       where the return is ignored anyway?)
> 
> I found another reason that more granular methods are necessary:
> 
> I have a field with a selection list and a submit button. The field is optional
> required based on the submit, i.e. if the submit button is pressed there must be
> something selected:
> 
> <wd:field id="event">
>   <wd:label><i18n:text key="events"/></wd:label>
>   <wd:datatype base="string"/>
>   <wd:validation>
>     <wd:javascript>
>       if (form.submitId == 'invoke' && widget.value == null) {
>         // add ValidationError
>         return false;
>       }
>       return true;
>     </wd:javascript>
>   </wd:validation>
> </wd:field>
> <wd:submit id="invoke" action-command="invoke" validate="false">
>   <wd:label><i18n:text key="action.invoke"/></wd:label>
> </wd:submit>
> 
> Problem: readFromRequest() causes validation on all widgets in their order in
> the form definition.

Which version are you using? I thought Sylvain fixed this a couple of
days ago.

>  But readFromRequest() also causes the setting of
> form.submitWidget. So form.submitWidget is not set yet if the above much
> shortened custom validator is evaluated. I have to put the field definition
> 'event' to the end of the form.
> 
> More granular methods help to solve the problem: 1st run through form model
> readFromRequest() -> also set form's submitWidget. 2nd run validate().

This separation has always been there (modulus bugs), exactly for your
use case.

-- 
Bruno Dumon                             http://outerthought.org/
Outerthought - Open Source, Java & XML Competence Support Center
[EMAIL PROTECTED]                          [EMAIL PROTECTED]

Reply via email to