Great ... this is something people have been asking for a while
(though beyond "required", how much validation can you do?).

Please keep an eye to copyright years when committing.

On Tue, Feb 17, 2009 at 4:25 AM,  <[email protected]> wrote:
> 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");
>
>
>



-- 
Howard M. Lewis Ship

Creator Apache Tapestry and Apache HiveMind

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to