Author: kmenard
Date: Tue Feb 17 12:25:16 2009
New Revision: 744998
URL: http://svn.apache.org/viewvc?rev=744998&view=rev
Log:
Fixed TAP5-166: Add validator support to RadioGroup
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RadioGroup.java
tapestry/tapestry5/trunk/tapestry-core/src/test/app1/RadioDemo.tml
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/IntegrationTests.java
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RadioGroup.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RadioGroup.java?rev=744998&r1=744997&r2=744998&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RadioGroup.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RadioGroup.java
Tue Feb 17 12:25:16 2009
@@ -62,6 +62,14 @@
@Parameter(required = true, allowNull = false)
private ValueEncoder encoder;
+ /**
+ * The object that will perform input validation. The validate binding
prefix is
+ * generally used to provide this object in a declarative fashion.
+ */
+ @Parameter(defaultPrefix = BindingConstants.VALIDATE)
+ @SuppressWarnings("unchecked")
+ private FieldValidator<Object> validate;
+
@Inject
private ComponentDefaultProvider defaultProvider;
@@ -80,6 +88,9 @@
@Environmental
private ValidationTracker tracker;
+ @Inject
+ private FieldValidationSupport fieldValidationSupport;
+
private String controlName;
String defaultLabel()
@@ -138,11 +149,20 @@
private void processSubmission()
{
- String clientValue = request.getParameter(controlName);
+ String rawValue = request.getParameter(controlName);
- tracker.recordInput(this, clientValue);
+ tracker.recordInput(this, rawValue);
+ try
+ {
+ if (validate != null)
+ fieldValidationSupport.validate(rawValue, resources, validate);
+ }
+ catch (ValidationException ex)
+ {
+ tracker.recordError(this, ex.getMessage());
+ }
- value = encoder.toValue(clientValue);
+ value = encoder.toValue(rawValue);
}
/**
@@ -222,11 +242,8 @@
return null;
}
- /**
- * Returns false; RadioGroup does not support declarative validation.
- */
public boolean isRequired()
{
- return false;
+ return validate.isRequired();
}
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/app1/RadioDemo.tml
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/app1/RadioDemo.tml?rev=744998&r1=744997&r2=744998&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/app1/RadioDemo.tml
(original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/app1/RadioDemo.tml Tue Feb
17 12:25:16 2009
@@ -6,7 +6,9 @@
<p>Choose a department and position:</p>
<t:form>
- <t:radiogroup t:id="department">
+ <t:errors/>
+
+ <t:radiogroup t:id="department" t:validate="required">
<t:loop source="departments" value="loopValue">
<p>
<t:radio t:id="radio" value="loopValue" label="prop:label" />
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/IntegrationTests.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/IntegrationTests.java?rev=744998&r1=744997&r2=744998&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/IntegrationTests.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/IntegrationTests.java
Tue Feb 17 12:25:16 2009
@@ -1107,6 +1107,18 @@
}
@Test
+ public void radio_group_validator()
+ {
+ start("RadioDemo");
+
+ String update = SUBMIT;
+
+ // Verify that the "required" validator works.
+ clickAndWait(update);
+ assertTextPresent("You must provide a value for Department.");
+ }
+
+ @Test
public void regexp_validator()
{
start("Regexp Demo");