Repository: tapestry-5 Updated Branches: refs/heads/master 5ae93b9dd -> f7a6480e7
TAP5-1981: convert client-side values back to server-side values for validation Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/f7a6480e Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/f7a6480e Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/f7a6480e Branch: refs/heads/master Commit: f7a6480e742ae30ca1eaef7a532f516f852f3fd0 Parents: 5ae93b9 Author: Jochen Kemnade <[email protected]> Authored: Mon Aug 17 16:41:05 2015 +0200 Committer: Jochen Kemnade <[email protected]> Committed: Mon Aug 17 16:41:05 2015 +0200 ---------------------------------------------------------------------- .../TapestryBeanValidationIntegrationTests.java | 19 +++++++++++ .../testapp/entities/BeanForTAP1981.java | 18 ++++++++++ .../testapp/pages/RadioGroupWithValidation.java | 35 ++++++++++++++++++++ .../src/test/webapp/Index.tml | 3 ++ .../test/webapp/RadioGroupWithValidation.tml | 32 ++++++++++++++++++ .../corelib/components/RadioGroup.java | 5 +-- 6 files changed, 110 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/f7a6480e/tapestry-beanvalidator/src/test/java/org/apache/tapestry5/beanvalidator/integration/TapestryBeanValidationIntegrationTests.java ---------------------------------------------------------------------- diff --git a/tapestry-beanvalidator/src/test/java/org/apache/tapestry5/beanvalidator/integration/TapestryBeanValidationIntegrationTests.java b/tapestry-beanvalidator/src/test/java/org/apache/tapestry5/beanvalidator/integration/TapestryBeanValidationIntegrationTests.java index 85d4d00..bfd9999 100644 --- a/tapestry-beanvalidator/src/test/java/org/apache/tapestry5/beanvalidator/integration/TapestryBeanValidationIntegrationTests.java +++ b/tapestry-beanvalidator/src/test/java/org/apache/tapestry5/beanvalidator/integration/TapestryBeanValidationIntegrationTests.java @@ -281,5 +281,24 @@ public class TapestryBeanValidationIntegrationTests extends SeleniumTestCase getText(String.format(locatorTemplate, "minValue"))); } + + //TAP5-1981 + @Test + public void validate_with_radiogroup() throws Exception + { + openLinks("Radio Group with Validation"); + + click("//div[@class='test1']/form/input[@value='3']"); + + clickAndWait("//div[@class='test1']/form/input[@type='submit']"); + + assertTextPresent("Radiogroup requires a value no larger than 2."); + + click("//div[@class='test2']/form/input[@value='3']"); + + clickAndWait("//div[@class='test2']/form/div/div/input[@type='submit']"); + + assertTextPresent("Group2 must be less than or equal to 2"); + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/f7a6480e/tapestry-beanvalidator/src/test/java/org/example/testapp/entities/BeanForTAP1981.java ---------------------------------------------------------------------- diff --git a/tapestry-beanvalidator/src/test/java/org/example/testapp/entities/BeanForTAP1981.java b/tapestry-beanvalidator/src/test/java/org/example/testapp/entities/BeanForTAP1981.java new file mode 100644 index 0000000..7274604 --- /dev/null +++ b/tapestry-beanvalidator/src/test/java/org/example/testapp/entities/BeanForTAP1981.java @@ -0,0 +1,18 @@ +package org.example.testapp.entities; + +import javax.validation.constraints.Max; + +public class BeanForTAP1981 { + + private int number; + + @Max(2) + public int getNumber() { + return number; + } + + public void setNumber(final int value) { + number = value; + } + +} http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/f7a6480e/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/RadioGroupWithValidation.java ---------------------------------------------------------------------- diff --git a/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/RadioGroupWithValidation.java b/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/RadioGroupWithValidation.java new file mode 100644 index 0000000..8531029 --- /dev/null +++ b/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/RadioGroupWithValidation.java @@ -0,0 +1,35 @@ +package org.example.testapp.pages; + +import org.apache.tapestry5.FieldValidator; +import org.apache.tapestry5.annotations.Component; +import org.apache.tapestry5.annotations.Environmental; +import org.apache.tapestry5.annotations.Persist; +import org.apache.tapestry5.corelib.components.RadioGroup; +import org.apache.tapestry5.services.PropertyEditContext; +import org.example.testapp.entities.BeanForTAP1981; + +public class RadioGroupWithValidation { + + @Component(parameters = { "value=bean.number", "validate=prop:beanValidator" }) + private RadioGroup group2; + + /* */ + @Persist + private BeanForTAP1981 bean; + + /* */ + @Environmental + private PropertyEditContext context; + + public BeanForTAP1981 getBean() { + if (bean == null) { + bean = new BeanForTAP1981(); + } + return bean; + } + + public FieldValidator getBeanValidator() { + return context.getValidator(group2); + } + +} http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/f7a6480e/tapestry-beanvalidator/src/test/webapp/Index.tml ---------------------------------------------------------------------- diff --git a/tapestry-beanvalidator/src/test/webapp/Index.tml b/tapestry-beanvalidator/src/test/webapp/Index.tml index abc9dfa..e19eafb 100644 --- a/tapestry-beanvalidator/src/test/webapp/Index.tml +++ b/tapestry-beanvalidator/src/test/webapp/Index.tml @@ -32,6 +32,9 @@ </li> <li> <t:pagelink page="NestedObjectDemo" t:context="true">NestedObject Demo (client validation enabled)</t:pagelink> + </li> + <li> + <t:pagelink page="RadioGroupWithValidation">Radio Group with Validation</t:pagelink> </li> </ul> </body> http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/f7a6480e/tapestry-beanvalidator/src/test/webapp/RadioGroupWithValidation.tml ---------------------------------------------------------------------- diff --git a/tapestry-beanvalidator/src/test/webapp/RadioGroupWithValidation.tml b/tapestry-beanvalidator/src/test/webapp/RadioGroupWithValidation.tml new file mode 100644 index 0000000..f1123a1 --- /dev/null +++ b/tapestry-beanvalidator/src/test/webapp/RadioGroupWithValidation.tml @@ -0,0 +1,32 @@ +<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd" + xmlns:p="tapestry:parameter"> + <body> + <div class="test1"> + <h1>test 1</h1> + <t:form> + + <t:errors/> + <t:RadioGroup value="bean.number" validate="max=2"> + <t:radio value="1"/>1<br/> + <t:radio value="2"/>2<br/> + <t:radio value="3"/>3<br/> + </t:RadioGroup> + + <t:submit/> + </t:form> + </div> + <div class="test2"> + + <h1>test 2</h1> + <t:BeanEditForm object="bean"> + <p:number> + <t:comp t:id="group2"> + <t:radio value="1"/>1<br/> + <t:radio value="2"/>2<br/> + <t:radio value="3"/>3<br/> + </t:comp> + </p:number> + </t:BeanEditForm> + </div> + </body> +</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/f7a6480e/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RadioGroup.java ---------------------------------------------------------------------- diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RadioGroup.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RadioGroup.java index cd594c1..053f056 100644 --- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RadioGroup.java +++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RadioGroup.java @@ -170,19 +170,20 @@ public class RadioGroup implements Field return; } String rawValue = request.getParameter(controlName); + Object convertedValue = encoder.toValue(rawValue); tracker.recordInput(this, rawValue); try { if (validate != null) - fieldValidationSupport.validate(rawValue, resources, validate); + fieldValidationSupport.validate(convertedValue, resources, validate); } catch (ValidationException ex) { tracker.recordError(this, ex.getMessage()); } - value = encoder.toValue(rawValue); + value = convertedValue; } /**
