First, let me thank Igor Vaynberg for being so responsive updating the
net.ftlines.wicket-bean-validation<http://mvnrepository.com/artifact/net.ftlines.wicket-bean-validation>
project.
I still have one final problem configuring it. I have a test that checks that
setting a field to a value that violates an @Size constraint should fail
validation. I get the following stacktrace:
codeMustBeAtMost4Chars(com.example.wicket.components.classification.CategoryPanelTest)
Time elapsed: 0.344 sec <<< ERROR!
org.apache.wicket.WicketRuntimeException: Method onFormSubmitted of interface
org.apache.wicket.markup.html.form.IFormSubmitListener targeted at
[ValidationForm [Component id = form]] on component [ValidationForm [Component
id = form]] threw an exception
at
org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:270)
at
org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:216)
at
org.apache.wicket.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:248)
at
org.apache.wicket.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:234)
at
org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:750)
at
org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
at
org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:252)
at
org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:209)
at
org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:280)
at
org.apache.wicket.util.tester.BaseWicketTester.processRequest(BaseWicketTester.java:626)
at
org.apache.wicket.util.tester.BaseWicketTester.processRequest(BaseWicketTester.java:546)
at
org.apache.wicket.util.tester.BaseWicketTester.processRequest(BaseWicketTester.java:518)
at
org.apache.wicket.util.tester.BaseWicketTester.submitForm(BaseWicketTester.java:1900)
at org.apache.wicket.util.tester.FormTester.submit(FormTester.java:755)
at
com.example.wicket.components.classification.CategoryPanelTest.codeMustBeAtMost4Chars(CategoryPanelTest.java:81)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at
org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
at
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
at
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345)
at
org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:260)
... 43 more
Caused by: java.util.MissingResourceException: Unable to find property:
'javax.validation.constraints.Size.message' for component: testObject:form
[class=net.ftlines.wicket.validation.bean.ValidationForm]
at org.apache.wicket.Localizer.getString(Localizer.java:239)
at org.apache.wicket.Localizer.getString(Localizer.java:130)
at org.apache.wicket.Component.getString(Component.java:1889)
at org.apache.wicket.Component.getString(Component.java:1876)
at
net.ftlines.wicket.validation.bean.ValidationForm$FormErrorSource.getMessage(ValidationForm.java:231)
at
org.apache.wicket.validation.ValidationError.getErrorMessage(ValidationError.java:150)
at
net.ftlines.wicket.validation.bean.ValidationForm.validateFormModelObject(ValidationForm.java:215)
at
net.ftlines.wicket.validation.bean.ValidationForm.onValidateModelObjects(ValidationForm.java:198)
at org.apache.wicket.markup.html.form.Form.process(Form.java:830)
at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:762)
at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:692)
... 48 more
The Hibernate Validator documentation states:
# In order to resolve these parameters Hibernate Validator's default
MessageInterpolator first recursively
# resolves parameters against a custom ResourceBundle called
ValidationMessages.properties at the
# root of the classpath (It is up to you to create this file). If no further
replacements are possible against the
# custom bundle the default ResourceBundle under
# /org/hibernate/validator/ValidationMessages.properties gets evaluated.
So, something is causing the validator to not search its normal locations.
Version 4.2.0.Final of the Hibernate Validator jar is a transitive Maven
dependency
Respectfully,
Eric Jablow
This communication, along with any attachments, is covered by federal and state
law governing electronic communications and may contain company proprietary and
legally privileged information. If the reader of this message is not the
intended recipient, you are hereby notified that any dissemination,
distribution, use or copying of this message is strictly prohibited. If you
have received this in error, please reply immediately to the sender and delete
this message. Thank you.