struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David Bolsover" <struts-u...@bolsover.com>
Subject Validator - how to check a checkbox - solution
Date Tue, 15 Nov 2005 13:09:53 GMT
 

I finally have a solution that works...


Problem
date_Shipped is a text field backed by a String in the ActionForm
complete is a checkbox backed by a boolean in the ActionForm

Form validation is required such that an entry in date_Shipped is required
if complete is true.

validation.xml
*****************
<field property="date_Shipped" depends="validwhen">
 <arg0 key="returns.date_Shipped"/>
 <var>
  <var-name>test</var-name>
  <var-value>
   (((complete == 'false') and (*this* == null)) or
   ((complete == 'true')  and (*this* != null)))
  </var-value>
 </var>
</field>


Note: 'false', 'true' are quoted.


.jsp
******************
<snip>
<html:checkbox property="complete"/>
<input type="hidden" name="complete" value="false" />
</snip>

The key point here is that HTML spec says that form elements must be
submitted in the GET or POST in the order that they are specified in the
HTML - so in the above, "complete=true&complete=false" is passed. But the
beanutils code only uses the first parameter to set the value. If the
checkbox is left unchecked, then there will be only 1 parameter
"complete=false" which will ensure the property is set.

My thanks to Chris Felaco for his original post re the above to jGuru.

db


> -----Original Message-----
> From: David Bolsover [mailto:struts-user@bolsover.com] 
> Sent: 15 November 2005 08:25
> To: 'Struts Users Mailing List'
> Subject: RE: Validator - how to check a checkbox
> 
> Hi Laurie
> 
> No joy with this I'm afraid..
> 
> Using your suggestion, 'date_Shipped' is always required no 
> matter the state of 'complete'.
> 
> date_Shipped is a String.
> complete is a boolean.
> 
> I had expected that the status of a boolean would be either 
> true or false - but now I'm not sure - also, I'm not sure how 
> to debug this - without digging into the validator code.  I 
> assume that the validator does it's stuff before the 
> ActionForm gets to my Action; returning the user to the input 
> if validation fails.
>  
> Any more suggestions?
> 
> db
> 
> 
> > -----Original Message-----
> > From: news [mailto:news@sea.gmane.org] On Behalf Of Laurie Harper
> > Sent: 14 November 2005 23:54
> > To: user@struts.apache.org
> > Subject: Re: Validator - how to check a checkbox
> > 
> > David Bolsover wrote:
> > > Hi all
> > > 
> > > I've done a deal of searching through the archives, looked at the 
> > > examples - even read the docs - I'm still stuggling with this...
> > > 
> > > I need to validate a number of fields in a from; certain 
> fields are 
> > > required if a checkbox is checked and should be empty if
> > the checkbox is not checked.
> > > 
> > > What is the correct syntax in validator.xml?
> > > 
> > > 'date_Shipped' must only be populated if the 'complete' 
> > checkbox is checked.
> > > 
> > > As an example of what I have tried....broken...
> > > 
> > > <field property="date_Shipped" depends="validwhen">  <arg0 
> > > key="returns.date_Shipped"/>
> > >    <var>
> > >     <var-name>test</var-name>
> > >     <var-value>(complete == 'on')</var-value>
> > >    </var>
> > > </field>
> > 
> > That says date_Shipped is valid *only* when complete has the value 
> > 'on'.
> > And since a checkbox field is never going to have the value 'on', 
> > date_Shipped isn't ever going to be valid...
> > 
> > What you want is probably something like
> > 
> >     (((complete == false) and (*this* == null)) or
> >      ((complete == true)  and (*this* != null)))
> > 
> > I'm not sure if true/false is what you need, or if that 
> needs to be a 
> > test for null; it probably depends on the type you've 
> declared for the 
> > 'complete' property in your form.
> > 
> > L.
> > 
> > 
> > 
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> > For additional commands, e-mail: user-help@struts.apache.org
> > 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Mime
View raw message