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]