Not a problem. My example was picking up org.apache.bval.jsr303.* (in OpenEJB) 
instead of the hibernate validator. When I fixed the classpath the problem went 
away. It doesn't fully explain the symptoms I described, but for now I'm happy.


On 16/05/2013, at 1:04 AM, Geoff Callender wrote:

> Normally I have no problem editing a LocalDate (joda-time) field with 
> BeanEditForm. I use type coercion between LocalDate and java.util.Date, and a 
> PropertyEditBlock, as described here:
> 
>       
> http://jumpstart.doublenegative.com.au/jumpstart/examples/lang/propertyeditors
> 
> However, if I add JSR-303 Bean Validation to the property, eg.
> 
>       @NotNull
>       private LocalDate testedOn;
> 
> then on submit the server-side throws an exception (stacktrace is below). In 
> debug it looks like the bean validation is receiving the un-coerced Date and 
> complaining because it expects a LocalDate.
> 
> Is anyone else having this problem? Is it a bug?
> 
> I'm using tapestry 5.3.7, tapestry5-jquery-3.3.4, tapestry-bootstrap-2.1.3, 
> hibernate-validator-annotation-processor-4.3.1-Final.
> 
> ERROR [536512858@qtp-984019976-4] (OperationTrackerImpl.java:127) - Wed Apr 
> 10 00:00:00 EST 2013 is not a valid value for property testedOn of type class 
> au.com.myapp.business.domain.client.iface.TestDto
> ERROR [536512858@qtp-984019976-4] (OperationTrackerImpl.java:128) - 
> Operations trace:
> ERROR [536512858@qtp-984019976-4] (OperationTrackerImpl.java:137) - [ 1] 
> Triggering event 'action' on sandpit/test/Edit:testform.form
> ERROR [536512858@qtp-984019976-4] (DefaultRequestExceptionHandler.java:63) - 
> Processing of request failed with uncaught exception: Wed Apr 10 00:00:00 EST 
> 2013 is not a valid value for property testedOn of type class 
> au.com.myapp.business.domain.client.iface.TestDto
> org.apache.tapestry5.ioc.internal.OperationException: Wed Apr 10 00:00:00 EST 
> 2013 is not a valid value for property testedOn of type class 
> au.com.myapp.business.domain.client.iface.TestDto [at 
> classpath:org/apache/tapestry5/corelib/components/BeanEditForm.tml, line 2]
>       at 
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:121)
>       at 
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:88)
>       at 
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
>       at 
> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1124)
>       at 
> org.apache.tapestry5.internal.structure.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.java:146)
>       at 
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1058)
>       at 
> org.apache.tapestry5.internal.services.ComponentEventRequestHandlerImpl.handle(ComponentEventRequestHandlerImpl.java:81)
>       at 
> org.apache.tapestry5.internal.services.ImmediateActionRenderResponseFilter.handle(ImmediateActionRenderResponseFilter.java:42)
>       at $ComponentEventRequestHandler_12fe514615d210b2.handle(Unknown Source)
>       at 
> org.apache.tapestry5.internal.services.AjaxFilter.handle(AjaxFilter.java:42)
>       at $ComponentEventRequestHandler_12fe514615d210b2.handle(Unknown Source)
>       at 
> org.apache.tapestry5.upload.internal.services.UploadExceptionFilter.handle(UploadExceptionFilter.java:75)
>       at $ComponentEventRequestHandler_12fe514615d210b2.handle(Unknown Source)
>       at 
> org.apache.tapestry5.services.TapestryModule$41.handle(TapestryModule.java:2476)
>       at $ComponentEventRequestHandler_12fe514615d210b2.handle(Unknown Source)
>       at $ComponentEventRequestHandler_12fe514615d20f83.handle(Unknown Source)
>       at 
> org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handleComponentEvent(ComponentRequestHandlerTerminator.java:43)
>       at 
> org.apache.tapestry5.services.InitializeActivePageName.handleComponentEvent(InitializeActivePageName.java:39)
>       at 
> $ComponentRequestHandler_12fe514615d20f85.handleComponentEvent(Unknown Source)
>       at 
> au.com.myapp.web.services.PageProtectionFilter.handleComponentEvent(PageProtectionFilter.java:86)
>       at 
> $ComponentRequestFilter_12fe514615d20f82.handleComponentEvent(Unknown Source)
>       at 
> $ComponentRequestHandler_12fe514615d20f85.handleComponentEvent(Unknown Source)
>       at 
> $ComponentRequestHandler_12fe514615d20f4b.handleComponentEvent(Unknown Source)
>       at 
> org.apache.tapestry5.internal.services.ComponentEventDispatcher.dispatch(ComponentEventDispatcher.java:46)
>       at $Dispatcher_12fe514615d20f50.dispatch(Unknown Source)
>       at $Dispatcher_12fe514615d20f47.dispatch(Unknown Source)
>       at 
> org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:302)
>       at 
> org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
>       at $RequestHandler_12fe514615d20f48.service(Unknown Source)
>       at 
> org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:902)
>       at $RequestHandler_12fe514615d20f48.service(Unknown Source)
>       at 
> org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:892)
>       at $RequestHandler_12fe514615d20f48.service(Unknown Source)
>       at 
> org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:90)
>       at $RequestHandler_12fe514615d20f48.service(Unknown Source)
>       at 
> org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:105)
>       at 
> org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:95)
>       at 
> org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
>       at 
> org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:119)
>       at $RequestHandler_12fe514615d20f48.service(Unknown Source)
>       at 
> au.com.myapp.web.services.AssetProtectionFilter.service(AssetProtectionFilter.java:53)
>       at $RequestHandler_12fe514615d20f48.service(Unknown Source)
>       at $RequestHandler_12fe514615d20f39.service(Unknown Source)
>       at 
> org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:253)
>       at 
> org.apache.tapestry5.upload.internal.services.MultipartServletRequestFilter.service(MultipartServletRequestFilter.java:44)
>       at $HttpServletRequestHandler_12fe514615d20f3b.service(Unknown Source)
>       at 
> org.got5.tapestry5.jquery.services.AjaxUploadServletRequestFilter.service(AjaxUploadServletRequestFilter.java:26)
>       at $HttpServletRequestHandler_12fe514615d20f3b.service(Unknown Source)
>       at 
> org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
>       at $HttpServletRequestHandler_12fe514615d20f3b.service(Unknown Source)
>       at 
> org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
>       at $HttpServletRequestFilter_12fe514615d20f35.service(Unknown Source)
>       at $HttpServletRequestHandler_12fe514615d20f3b.service(Unknown Source)
>       at 
> org.apache.tapestry5.services.TapestryModule$1.service(TapestryModule.java:852)
>       at $HttpServletRequestHandler_12fe514615d20f3b.service(Unknown Source)
>       at $HttpServletRequestHandler_12fe514615d20f34.service(Unknown Source)
>       at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:171)
>       at 
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
>       at 
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
>       at 
> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
>       at 
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
>       at 
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
>       at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
>       at 
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
>       at org.mortbay.jetty.Server.handle(Server.java:326)
>       at 
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
>       at 
> org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:945)
>       at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)
>       at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
>       at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
>       at 
> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
>       at 
> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
> Caused by: org.apache.tapestry5.runtime.ComponentEventException: Wed Apr 10 
> 00:00:00 EST 2013 is not a valid value for property testedOn of type class 
> au.com.myapp.business.domain.client.iface.TestDto [at 
> classpath:org/apache/tapestry5/corelib/components/BeanEditForm.tml, line 2]
>       at 
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.processEventTriggering(ComponentPageElementImpl.java:1141)
>       at 
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$3100(ComponentPageElementImpl.java:61)
>       at 
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1062)
>       at 
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1059)
>       at 
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
>       ... 70 more
> Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException: Wed Apr 
> 10 00:00:00 EST 2013 is not a valid value for property testedOn of type class 
> au.com.myapp.business.domain.client.iface.TestDto [at 
> classpath:au/com/myapp/web/pages/infra/AppPropertyEditBlocks.tml, line 14]
>       at 
> org.apache.tapestry5.corelib.components.Form.executeStoredActions(Form.java:689)
>       at 
> org.apache.tapestry5.corelib.components.Form.advised$onAction_12fe514615d20fd4(Form.java:539)
>       at 
> org.apache.tapestry5.corelib.components.Form$Invocation_onAction_12fe514615d20fd3.proceedToAdvisedMethod(Unknown
>  Source)
>       at 
> org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:84)
>       at 
> org.apache.tapestry5.ioc.internal.services.LoggingAdvice.advise(LoggingAdvice.java:37)
>       at 
> org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:86)
>       at org.apache.tapestry5.corelib.components.Form.onAction(Form.java)
>       at 
> org.apache.tapestry5.corelib.components.Form.dispatchComponentEvent(Form.java)
>       at 
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:940)
>       at 
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.processEventTriggering(ComponentPageElementImpl.java:1117)
>       ... 74 more
> Caused by: java.lang.IllegalArgumentException: Wed Apr 10 00:00:00 EST 2013 
> is not a valid value for property testedOn of type class 
> au.com.myapp.business.domain.client.iface.TestDto
>       at 
> org.apache.bval.jsr303.ClassValidator.unrecoverableValidationError(ClassValidator.java:511)
>       at 
> org.apache.bval.jsr303.ClassValidator.validateValueImpl(ClassValidator.java:813)
>       at 
> org.apache.bval.jsr303.ClassValidator.validateValue(ClassValidator.java:239)
>       at 
> org.apache.bval.jsr303.ClassValidator.validateValue(ClassValidator.java:231)
>       at 
> org.apache.tapestry5.internal.beanvalidator.BeanFieldValidator.validate(BeanFieldValidator.java:145)
>       at 
> org.apache.tapestry5.internal.services.CompositeFieldValidator.validate(CompositeFieldValidator.java:39)
>       at 
> org.apache.tapestry5.internal.services.FieldValidationSupportImpl.validate(FieldValidationSupportImpl.java:154)
>       at $FieldValidationSupport_12fe514615d2105c.validate(Unknown Source)
>       at 
> org.apache.tapestry5.corelib.components.DateField.processSubmission(DateField.java:287)
>       at 
> org.apache.tapestry5.corelib.base.AbstractField.processSubmission(AbstractField.java:193)
>       at 
> org.apache.tapestry5.corelib.base.AbstractField.access$100(AbstractField.java:37)
>       at 
> org.apache.tapestry5.corelib.base.AbstractField$ProcessSubmission.execute(AbstractField.java:95)
>       at 
> org.apache.tapestry5.corelib.base.AbstractField$ProcessSubmission.execute(AbstractField.java:89)
>       at 
> org.apache.tapestry5.corelib.components.Form.executeStoredActions(Form.java:678)
>       ... 83 more
> Caused by: org.apache.bval.jsr303.IncompatiblePropertyValueException: Wed Apr 
> 10 00:00:00 EST 2013 is not a valid value for property testedOn of type class 
> au.com.myapp.business.domain.client.iface.TestDto
>       at 
> org.apache.bval.jsr303.ClassValidator.validateValueImpl(ClassValidator.java:735)
>       ... 95 more
> 
> 
> 
> 

Reply via email to