On 8/8/07, Developer Abe <[EMAIL PROTECTED]> wrote:
> Hi Matt,
>
> I read that post and it was helpful but I still don't think I understand
> what is meant by
>
> "use a String property, and then do some custom formatting (after
> validation) to make it into a date".
>
> If I understand correctly when you said that it doesn't make sense to
>
> "to validate a java.util.Date (since it's already a java.util.Date)"
>
> I am a bit confused because I thought the validator was being used to ensure
> the text input from the form was in the correct format before being
> processed by server side logic.

It is with Struts, but not with Spring MVC. With Spring MVC, you use a
CustomDateEditor to register the format to use. A type mismatch error
will be thrown if the format is incorrect. Struts 2 works this same
way, as do many others. This conversion error is lumped into
validation, but it's not really validation IMO.

>
>
> I also am trying to add validation logic to verify that the start date is
> before the end date.  It is breaking with a similar error:
>
> [keymanager] DEBUG [main]
> KeyMetadataFormController.showNewForm(322) | Displaying new
> form
> [keymanager] DEBUG [main]
> KeyMetadataFormControllerTest.testSave(51) | 2005-01-0
> 1 00:00:00.0
> [keymanager] DEBUG [main]
> KeyMetadataFormControllerTest.testSave(52) | 2007-01-0
> 1 00:00:00.0
> [keymanager] DEBUG [main]
> KeyMetadataFormController.processFormSubmission(256) |
>  Data binding errors: 1
> [keymanager] DEBUG [main]
> KeyMetadataFormControllerTest.testSave (58) | org.sprin
> gframework.validation.BeanPropertyBindingResult: 1 errors
> Field error in object 'keyMetadata' on field 'endDate': rejected value [Mon
> Jan
> 01 00:00:00 PST 2007]; codes [endDate.keyMetadata.endDate
> ,endDate.endDate,endDat
> e.java.util.Date,endDate]; arguments []; default message [The End Date has
> to be
>  after the Start Date]
> [keymanager] INFO [main]
> KeyMetadataFormControllerTest.endTransaction(290) | Rol
>  led back transaction after test execution
>
>
> I took out the "date" in depends just to see if I could get farther:
>
> //validation.xml
> <field property="startDate" depends="required">
>               <arg0 key="keyMetadata.startDate"/>
>               <var>
>                   <var-name>datePattern</var-name>
>                   <var-value>MM/dd/yyyy</var-value>
>               </var>
>           </field>
>           <field property="endDate" depends="required">
>               <arg0 key=" keyMetadata.endDate"/>
>               <var>
>                   <var-name>datePattern</var-name>
>                   <var-value>MM/dd/yyyy</var-value>
>               </var>
>           </field>
>
> //dispatcher-servlet.xml
> <bean id="keyMetadataFormController"
> class="com.intuit.security.keymanager.webapp.controller.KeyMetadataFormController">
>         <property name="validators">
>                 <list>
>                     <ref bean="beanValidator"/>      <!--Commons Server-side
> validation -->
>                     <ref bean="endDateValidator"/>       <!--Spring
> validation -->
>                 </list>
>         </property>
>         <property name="successView" value="redirect:keymetadatas.html"/>
>         <property name="keyMetadataManager" ref="keyMetadataManager"/>
>         <property name="typeCodeManager" ref="typeCodeManager"/>
>     </bean>
>
>
> //applicationContext-validation.xml
> <bean id="endDateValidator"
> class="org.springmodules.validation.valang.ValangValidator">
>         <property name="valang">
>             <value>
>             <![CDATA[
>                 { endDate : endDate < startDate : 'The End Date has to be
> after the Start Date'}
>             ]]>
>             </value>
>         </property>
>         <property name="dateParserRegistrations">
>             <map>
>                 <entry key="^d{2}/d{2}/d{4}$" value="MM/dd/yyyy"/>
>             </map>
>         </property>
>     </bean>

It looks like you may be trying to mix Valang Validator and Commons
Validator. I've never worked with Valang validator, so I don't know if
I can offer much assistance.

Matt

>
>
> Regards,
> Abe
>
>
>
> On 8/8/07, Matt Raible <[EMAIL PROTECTED]> wrote:
> >
> > This should help:
> >
> >
> http://www.jroller.com/raible/entry/validating_dates_with_commons_validator
> >
> > Matt
> >
> > On 8/8/07, Developer Abe <[EMAIL PROTECTED]> wrote:
> > > Getting the following:
> > >
> > > [keymanager] DEBUG [main]
> > > KeyMetadataFormController.showNewForm(322) | Displayin
> > > g new form
> > > [keymanager] DEBUG [main]
> > > KeyMetadataFormControllerTest.testSave(51) | 2005-01-0
> > > 1 00:00:00.0
> > > [keymanager] DEBUG [main]
> > > KeyMetadataFormControllerTest.testSave(52) | 2007-01-0
> > > 1 00:00:00.0
> > > [keymanager] DEBUG [main]
> > > KeyMetadataFormController.processFormSubmission (256) |
> > >  Data binding errors: 2
> > > [keymanager] DEBUG [main]
> > > KeyMetadataFormControllerTest.testSave (58) | org.sprin
> > > gframework.validation.BeanPropertyBindingResult: 2
> errors
> > > Field error in object 'keyMetadata' on field 'startDate': rejected value
> > > [Sat Ja
> > > n 01 00:00:00 PST 2005]; codes [
> > > errors.date.keyMetadata.startDate,errors.date.st
> > > artDate,errors.date.java.util.Date,errors.date]; arguments
> > > [org.springframework.
> > > context.support.DefaultMessageSourceResolvable: codes [
> > > keyMetadata.startDate]; a
> > > rguments []; default message [keyMetadata.startDate]]; default message
> > > [errors.d
> > > ate]
> > > Field error in object 'keyMetadata' on field 'endDate': rejected value
> [Mon
> > > Jan
> > > 01 00:00:00 PST 2007]; codes
> > > [errors.date.keyMetadata.endDate,errors.date.endDat
> > > e,errors.date.java.util.Date,errors.date]; arguments
> > > [org.springframework.contex
> > > t.support.DefaultMessageSourceResolvable: codes [
> > > keyMetadata.endDate]; arguments
> > >  []; default message [ keyMetadata.endDate]]; default message
> [errors.date]
> > > [keymanager] INFO [main]
> > > KeyMetadataFormControllerTest.endTransaction(290) | Rol
> > > led back transaction after test execution
> > > [keymanager] INFO [main]
> > > KeyMetadataFormControllerTest.startNewTransaction(323)
> > > | Began transaction (1): transaction manager
> > > [org.springframework.orm.hibernate3
> > >  [EMAIL PROTECTED]; default rollback
> =
> > > true
> > > [keymanager] DEBUG [main]
> > > KeyMetadataFormController.processFormSubmission(256) |
> > >  Data binding errors: 2
> > > [keymanager] INFO [main]
> > > KeyMetadataFormControllerTest.endTransaction (290) |
> Rol
> > > led back transaction after test execution
> > > Tests run: 3, Failures: 2, Errors: 0, Skipped: 0, Time elapsed: 109.045
> sec
> > > <<<
> > > FAILURE!
> > > Running
> > >
> com.intuit.security.keymanager.webapp.controller.KeyMetadataControllerTest
> > >
> > > With the following config:
> > >
> > >          <field property="startDate" depends="required, date">
> > >               <arg0 key="keyMetadata.startDate"/>
> > >               <var>
> > >                   <var-name>datePattern</var-name>
> > >                   <var-value>MM/dd/yyyy</var-value>
> > >               </var>
> > >           </field>
> > >           <field property="endDate" depends="required, date">
> > >               <arg0 key=" keyMetadata.endDate"/>
> > >               <var>
> > >                   <var-name>datePattern</var-name>
> > >                   <var-value>MM/dd/yyyy</var-value>
> > >               </var>
> > >           </field>
> > >
> > > The java.util.Dates are getting populated into the model object
> correctly
> > > but I am getting the error above.
> > >
> > > Does anyone know what I could be doing wrong.
> > >
> > > Thanks,
> > > Abe
> > >
> > >
> >
> >
> > --
> > http://raibledesigns.com
> >
> >
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
>


-- 
http://raibledesigns.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to