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 > > > >