I need to do something similar - is it possible to have conditional visitor
validation in Struts 2? AFAICT, it isn't.
Basically, I'd like to have a couple of validation rules for a drop-down.
One rule is that the user must select at least one choice when the drop-down
has its radio button selected:
<field-validator type="fieldexpression" short-circuit="true">
reason != 'partner' or (reason == 'partner' and partnerPositionID !=
'_CHOOSE_')
<message>You must choose a position where you worked with this
person, or choose "Other..."</message>
</field-validator>
This works. Now I want to require a number of fields if the person selects
the "Other..." option. The validation syntax starts to get complicated at
this point. I'd like to do something like:
reason != 'partner' or (reason == 'partner' and partnerPositionID !=
'OTHER') -> kick in visitor validation.
I still think the above syntax is confusing (ref http://tinyurl.com/2htw2k),
I'd much rather write something like:
reason == 'partner' and partnerPositionID == 'OTHER' -> show message
I'm guessing it's possible to write my own FieldExpressionValidator that
inverses the true/false outcome?
Why do I need conditional visitor validation?
I'm trying to create a "component" that can be re-used in the backend (model
object w/ its own validation rules) and on the front-end (using JSP tag
files or the s:component tag).
If there's an easier way to do this, please let me know. Of course, I could
use JSF/Wicket/Tapestry - and that might be the outcome if this is not
possible.
Thanks,
Matt
Sparecreative wrote:
>
> Is there a way to setup conditional validation through the validation.xml
> file?
>
> I'm currently user the visitor validator method where my core user
> validation properties are in a User-validation.xml file. I want to be able
> to use this same file for all my user actions (register, add, update) and
> just have conditional code which looks a user field to determine
> validation.
>
> At the moment I'm using a combination of the valididation.xml file and the
> validate method in the action.
>
> I know the following doesn't work, but can I have something like this:
>
> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator
> 1.0.2//EN"
> "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
> <validators>
>
> <validator type="expression">
>
> user.action.equals('insert') || user.action.equals('register')
> <!-- only validate these fileds when inserting and registering a user -->
> <field name="user.password">
> <field-validator type="requiredstring">
> <message key="user.password.empty"/>
> </field-validator>
> </field>
> <field name="user.confirmPassword">
> <field-validator type="requiredstring">
> <message key="user.confirmPassword.empty"/>
> </field-validator>
> </field>
> </validator>
> <!-- core validated fields -->
> <field name="user.name">
> <field-validator type="requiredstring">
> <message key="user.name.empty">
> resource not found</message>
> </field-validator>
> </field>
> <field name="user.email">
> <field-validator type="requiredstring"
> short-circuit="true">
> <message key="user.email.empty"/>
> </field-validator>
> <field-validator type="email">
> <message key="user.email.invalid"/>
> </field-validator>
> </field>
> <field name="user.phone">
> <field-validator type="stringlength">
> 10
> <message key="user.phone.length"/>
> </field-validator>
> </field>
> <field name="user.city">
> <field-validator type="requiredstring">
> <message key="user.city.empty"/>
> </field-validator>
> </field>
>
>
>
> Z.
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
--
View this message in context:
http://www.nabble.com/Conditional-validation-tf3678771.html#a11950499
Sent from the Struts - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]