This change breaks the compatibility. The default binding prefix of
clientValidation parameter changed from PROP to LITERAL.

Again, it is not a big deal to fix it when upgrading to 5.2, but maybe there
is a way to keep the backward compatibility.

On Thu, Oct 21, 2010 at 1:46 AM, <[email protected]> wrote:

> Author: hlship
> Date: Wed Oct 20 23:46:20 2010
> New Revision: 1025793
>
> URL: http://svn.apache.org/viewvc?rev=1025793&view=rev
> Log:
> TAP5-538: Allow client-side validation when focus lost on field ("blur"),
> when form submits, or not at all
>
> Added:
>
>  
> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/ClientValidation.java
>   (with props)
> Modified:
>
>  
> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Form.java
>
>  
> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
>
>  
> tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry.js
>
>  
> tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditRemoveReorder.java
>
>  
> tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java
>
>  
> tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ValidBeanEditorDemo.java
>
> Added:
> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/ClientValidation.java
> URL:
> http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/ClientValidation.java?rev=1025793&view=auto
>
> ==============================================================================
> ---
> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/ClientValidation.java
> (added)
> +++
> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/ClientValidation.java
> Wed Oct 20 23:46:20 2010
> @@ -0,0 +1,41 @@
> +// Copyright 2010 The Apache Software Foundation
> +//
> +// Licensed under the Apache License, Version 2.0 (the "License");
> +// you may not use this file except in compliance with the License.
> +// You may obtain a copy of the License at
> +//
> +// http://www.apache.org/licenses/LICENSE-2.0
> +//
> +// Unless required by applicable law or agreed to in writing, software
> +// distributed under the License is distributed on an "AS IS" BASIS,
> +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> +// See the License for the specific language governing permissions and
> +// limitations under the License.
> +
> +package org.apache.tapestry5.corelib;
> +
> +/**
> + * Controls if and how client-side form input validation occurs. For
> compatibility with Tapestry 5.1,
> + * a coercion from "true" to {...@link #BLUR} and from "false" to {...@link
> #NONE} are added (though these
> + * may be removed some time after Tapestry 5.2).
> + *
> + * @since 5.2.2
> + */
> +public enum ClientValidation
> +{
> +    /**
> +     * Fields validate as the user tabs out of them ("onblur" client side
> event), as well as when the form submits. This
> +     * is the default behavior.
> +     */
> +    BLUR,
> +
> +    /**
> +     * Fields only validate when the form submits (validation errors will
> prevent the form from actually submitting).
> +     */
> +    SUBMIT,
> +
> +    /**
> +     * Client-side validation is disabled.
> +     */
> +    NONE;
> +}
>
> Propchange:
> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/ClientValidation.java
>
> ------------------------------------------------------------------------------
>    svn:eol-style = native
>
> Modified:
> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Form.java
> URL:
> http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Form.java?rev=1025793&r1=1025792&r2=1025793&view=diff
>
> ==============================================================================
> ---
> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Form.java
> (original)
> +++
> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Form.java
> Wed Oct 20 23:46:20 2010
> @@ -27,6 +27,7 @@ import org.apache.tapestry5.annotations.
>  import org.apache.tapestry5.annotations.OnEvent;
>  import org.apache.tapestry5.annotations.Parameter;
>  import org.apache.tapestry5.annotations.Persist;
> +import org.apache.tapestry5.corelib.ClientValidation;
>  import org.apache.tapestry5.corelib.internal.ComponentActionSink;
>  import org.apache.tapestry5.corelib.internal.FormSupportImpl;
>  import org.apache.tapestry5.corelib.internal.InternalFormSupport;
> @@ -46,6 +47,7 @@ import org.apache.tapestry5.ioc.internal
>  import org.apache.tapestry5.ioc.internal.util.TapestryException;
>  import org.apache.tapestry5.ioc.util.ExceptionUtils;
>  import org.apache.tapestry5.ioc.util.IdAllocator;
> +import org.apache.tapestry5.json.JSONObject;
>  import org.apache.tapestry5.runtime.Component;
>  import org.apache.tapestry5.services.ClientBehaviorSupport;
>  import org.apache.tapestry5.services.ClientDataEncoder;
> @@ -54,6 +56,7 @@ import org.apache.tapestry5.services.Env
>  import org.apache.tapestry5.services.FormSupport;
>  import org.apache.tapestry5.services.Heartbeat;
>  import org.apache.tapestry5.services.Request;
> +import org.apache.tapestry5.services.javascript.InitializationPriority;
>  import org.apache.tapestry5.services.javascript.JavaScriptSupport;
>  import org.slf4j.Logger;
>
> @@ -160,16 +163,11 @@ public class Form implements ClientEleme
>     private boolean clientLogicDefaultEnabled;
>
>     /**
> -     * If true (the default) then client validation is enabled for the
> form, and
> -     * the default set of JavaScript libraries
> -     * (Prototype, Scriptaculous and the Tapestry library) will be added
> to the
> -     * rendered page, and the form will
> -     * register itself for validation. This may be turned off when client
> -     * validation is not desired; for example, when
> -     * many validations are used that do not operate on the client side at
> all.
> +     * Controls when client validation occurs on the client, if at all.
> Defaults to {...@link ClientValidation#BLUR}.
>      */
> -    @Parameter
> -    private boolean clientValidation = clientLogicDefaultEnabled;
> +    @Parameter(allowNull = false, defaultPrefix =
> BindingConstants.LITERAL)
> +    private ClientValidation clientValidation = clientLogicDefaultEnabled
> ? ClientValidation.BLUR
> +            : ClientValidation.NONE;
>
>     /**
>      * If true (the default), then the JavaScript will be added to position
> the
> @@ -383,6 +381,8 @@ public class Form implements ClientEleme
>
>         formSupport = createRenderTimeFormSupport(clientId, actionSink,
> allocator);
>
> +        addJavaScriptInitialization();
> +
>         if (zone != null)
>             linkFormToZone(link);
>
> @@ -412,7 +412,7 @@ public class Form implements ClientEleme
>
>         form = writer.element("form", "id", clientId, "method", "post",
> "action", actionURL);
>
> -        if ((zone != null || clientValidation) && !request.isXHR())
> +        if ((zone != null || clientValidation != ClientValidation.NONE) &&
> !request.isXHR())
>             writer.attributes("onsubmit", MarkupConstants.WAIT_FOR_PAGE);
>
>         resources.renderInformalParameters(writer);
> @@ -432,6 +432,16 @@ public class Form implements ClientEleme
>         environment.peek(Heartbeat.class).begin();
>     }
>
> +    private void addJavaScriptInitialization()
> +    {
> +        JSONObject validateSpec = new JSONObject().put("blur",
> clientValidation == ClientValidation.BLUR).put("submit",
> +                clientValidation != ClientValidation.NONE);
> +
> +        JSONObject spec = new JSONObject("formId",
> clientId).put("validate", validateSpec);
> +
> +        javascriptSupport.addInitializerCall(InitializationPriority.EARLY,
> "formEventManager", spec);
> +    }
> +
>     @HeartbeatDeferred
>     private void linkFormToZone(Link link)
>     {
> @@ -460,8 +470,8 @@ public class Form implements ClientEleme
>     InternalFormSupport createRenderTimeFormSupport(String clientId,
> ComponentActionSink actionSink,
>             IdAllocator allocator)
>     {
> -        return new FormSupportImpl(resources, clientId, actionSink,
> clientBehaviorSupport, clientValidation, allocator,
> -                validationId);
> +        return new FormSupportImpl(resources, clientId, actionSink,
> clientBehaviorSupport,
> +                clientValidation != ClientValidation.NONE, allocator,
> validationId);
>     }
>
>     void afterRender(MarkupWriter writer)
>
> Modified:
> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
> URL:
> http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java?rev=1025793&r1=1025792&r2=1025793&view=diff
>
> ==============================================================================
> ---
> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
> (original)
> +++
> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
> Wed Oct 20 23:46:20 2010
> @@ -40,6 +40,7 @@ import org.apache.tapestry5.ajax.MultiZo
>  import org.apache.tapestry5.annotations.*;
>  import org.apache.tapestry5.annotations.ContentType;
>  import org.apache.tapestry5.beaneditor.Validate;
> +import org.apache.tapestry5.corelib.ClientValidation;
>  import org.apache.tapestry5.corelib.LoopFormState;
>  import org.apache.tapestry5.corelib.SubmitMode;
>  import org.apache.tapestry5.corelib.data.BlankOption;
> @@ -1217,8 +1218,18 @@ public final class TapestryModule
>                 return calendar;
>             }
>         }));
> +
> +        // Add support for "true" and "false", for compatibility with
> Tapestry 5.1 and earlier.
> +        // These aliases may be removed in some later release.
> +
> +        StringToEnumCoercion<ClientValidation>
> stringToClientValidationCoercion = StringToEnumCoercion
> +                .create(ClientValidation.class).addAlias("true",
> ClientValidation.BLUR)
> +                .addAlias("false", ClientValidation.NONE);
> +
> +        configuration.add(CoercionTuple.create(String.class,
> ClientValidation.class, stringToClientValidationCoercion));
>     }
>
> +    @SuppressWarnings("rawtypes")
>     private static <T extends Enum> void add(Configuration<CoercionTuple>
> configuration, Class<T> enumType)
>     {
>         configuration.add(CoercionTuple.create(String.class, enumType,
> StringToEnumCoercion.create(enumType)));
>
> Modified:
> tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry.js
> URL:
> http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry.js?rev=1025793&r1=1025792&r2=1025793&view=diff
>
> ==============================================================================
> ---
> tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry.js
> (original)
> +++
> tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry.js
> Wed Oct 20 23:46:20 2010
> @@ -1,16 +1,17 @@
> -// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
> -//
> -// Licensed under the Apache License, Version 2.0 (the "License");
> -// you may not use this file except in compliance with the License.
> -// You may obtain a copy of the License at
> -//
> -//     http://www.apache.org/licenses/LICENSE-2.0
> -//
> -// Unless required by applicable law or agreed to in writing, software
> -// distributed under the License is distributed on an "AS IS" BASIS,
> -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> -// See the License for the specific language governing permissions and
> -// limitations under the License.
> +/* Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
> + *
> + * Licensed under the Apache License, Version 2.0 (the "License");
> + * you may not use this file except in compliance with the License.
> + * You may obtain a copy of the License at
> + *
> + *     http:*www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> + * See the License for the specific language governing permissions and
> + * limitations under the License.
> + */
>
>  var Tapestry = {
>
> @@ -745,100 +746,115 @@ Element.addMethods( {
>        }
>  });
>
> -Element.addMethods('FORM', {
> -       /**
> -        * Gets or creates the Tapestry.FormEventManager for the form.
> -        *
> -        * @param form
> -        *            form element
> -        */
> -       getFormEventManager : function(form) {
> -               form = $(form);
> -               var t = $T(form);
> +Element
> +               .addMethods(
> +                               'FORM',
> +                               {
> +                                       /**
> +                                        * Gets the
> Tapestry.FormEventManager for the form.
> +                                        *
> +                                        * @param form
> +                                        *            form element
> +                                        */
> +                                       getFormEventManager :
> function(form) {
> +                                               form = $(form);
>
> -               var manager = t.formEventManager;
> +                                               var manager =
> $T(form).formEventManager;
>
> -               if (manager == undefined) {
> -                       manager = new Tapestry.FormEventManager(form);
> -                       t.formEventManager = manager;
> -               }
> +                                               if (manager == undefined) {
>
> -               return manager;
> -       },
> +                                                       throw "No
> Tapestry.FormEventManager object has been created for form '#{id}'."
> +
> .interpolate(form);
> +                                               }
>
> -       /**
> -        * Identifies in the form what is the cause of the submission. The
> element's
> -        * id is stored into the t:submit hidden field (created as needed).
> -        *
> -        * @param form
> -        *            to update
> -        * @param element
> -        *            id or element that is the cause of the submit (a
> Submit or
> -        *            LinkSubmit)
> -        */
> -       setSubmittingElement : function(form, element) {
> -               form.getFormEventManager().setSubmittingElement(element);
> -       },
> -
> -       /** Turns off client validation for the next submission of the
> form. */
> -       skipValidation : function(form) {
> -               $T(form).skipValidation = true;
> -       },
> -
> -       /**
> -        * Programmatically perform a submit, invling the onsubmit event
> handler (if
> -        * present) before calling form.submit().
> -        */
> -       performSubmit : function(form, event) {
> -               if (form.onsubmit == undefined
> -                               || form.onsubmit.call(window.document,
> event)) {
> -                       form.submit();
> -               }
> -       },
> +                                               return manager;
> +                                       },
>
> -       /**
> -        * Sends an Ajax request to the Form's action. This encapsulates a
> few
> -        * things, such as a default onFailure handler, and working around
> -        * bugs/features in Prototype concerning how submit buttons are
> processed.
> -        *
> -        * @param form
> -        *            used to define the data to be sent in the request
> -        * @param options
> -        *            standard Prototype Ajax Options
> -        * @return Ajax.Request the Ajax.Request created for the request
> -        */
> -       sendAjaxRequest : function(form, url, options) {
> -               form = $(form);
> +                                       /**
> +                                        * Identifies in the form what is
> the cause of the
> +                                        * submission. The element's id is
> stored into the t:submit
> +                                        * hidden field (created as
> needed).
> +                                        *
> +                                        * @param form
> +                                        *            to update
> +                                        * @param element
> +                                        *            id or element that is
> the cause of the submit
> +                                        *            (a Submit or
> LinkSubmit)
> +                                        */
> +                                       setSubmittingElement :
> function(form, element) {
> +                                               form.getFormEventManager()
> +
> .setSubmittingElement(element);
> +                                       },
>
> -               /*
> -                * Generally, options should not be null or missing,
> because otherwise
> -                * there's no way to provide any callbacks!
> -                */
> -               options = Object.clone(options || {});
> +                                       /**
> +                                        * Turns off client validation for
> the next submission of
> +                                        * the form.
> +                                        */
> +                                       skipValidation : function(form) {
> +                                               $T(form).skipValidation =
> true;
> +                                       },
>
> -               /*
> -                * Find the elements, skipping over any submit buttons.
> This works
> -                * around bugs in Prototype 1.6.0.2.
> -                */
> -               var elements = form.getElements().reject(function(e) {
> -                       return e.tagName == "INPUT" && e.type == "submit";
> -               });
> +                                       /**
> +                                        * Programmatically perform a
> submit, invoking the onsubmit
> +                                        * event handler (if present)
> before calling form.submit().
> +                                        */
> +                                       performSubmit : function(form,
> event) {
> +                                               if (form.onsubmit ==
> undefined
> +                                                               ||
> form.onsubmit.call(window.document, event)) {
> +                                                       form.submit();
> +                                               }
> +                                       },
>
> -               var hash = Form.serializeElements(elements, true);
> +                                       /**
> +                                        * Sends an Ajax request to the
> Form's action. This
> +                                        * encapsulates a few things, such
> as a default onFailure
> +                                        * handler, and working around
> bugs/features in Prototype
> +                                        * concerning how submit buttons
> are processed.
> +                                        *
> +                                        * @param form
> +                                        *            used to define the
> data to be sent in the
> +                                        *            request
> +                                        * @param options
> +                                        *            standard Prototype
> Ajax Options
> +                                        * @return Ajax.Request the
> Ajax.Request created for the
> +                                        *         request
> +                                        */
> +                                       sendAjaxRequest : function(form,
> url, options) {
> +                                               form = $(form);
>
> -               /*
> -                * Copy the parameters in, overwriting field values,
> because Prototype
> -                * 1.6.0.2 does not.
> -                */
> -               Object.extend(hash, options.parameters);
> +                                               /*
> +                                                * Generally, options
> should not be null or missing,
> +                                                * because otherwise
> there's no way to provide any
> +                                                * callbacks!
> +                                                */
> +                                               options =
> Object.clone(options || {});
> +
> +                                               /*
> +                                                * Find the elements,
> skipping over any submit buttons.
> +                                                * This works around bugs
> in Prototype 1.6.0.2.
> +                                                */
> +                                               var elements =
> form.getElements().reject(function(e) {
> +                                                       return e.tagName ==
> "INPUT" && e.type == "submit";
> +                                               });
>
> -               options.parameters = hash;
> +                                               var hash =
> Form.serializeElements(elements, true);
>
> -               /* Ajax.Request will convert the hash into a query string
> and post it. */
> +                                               /*
> +                                                * Copy the parameters in,
> overwriting field values,
> +                                                * because Prototype
> 1.6.0.2 does not.
> +                                                */
> +                                               Object.extend(hash,
> options.parameters);
> +
> +                                               options.parameters = hash;
> +
> +                                               /*
> +                                                * Ajax.Request will
> convert the hash into a query
> +                                                * string and post it.
> +                                                */
>
> -               return Tapestry.ajaxRequest(url, options);
> -       }
> -});
> +                                               return
> Tapestry.ajaxRequest(url, options);
> +                                       }
> +                               });
>
>  Element.addMethods( [ 'INPUT', 'SELECT', 'TEXTAREA' ], {
>        /**
> @@ -1055,7 +1071,6 @@ Tapestry.Initializer = {
>                if (element.tagName == "FORM") {
>
>                        // Create the FEM if necessary.
> -                       element.getFormEventManager();
>                        element.addClassName(Tapestry.PREVENT_SUBMISSION);
>
>                        /*
> @@ -1114,6 +1129,18 @@ Tapestry.Initializer = {
>        },
>
>        /**
> +        * Sets up a Tapestry.FormEventManager for the form, and enables
> events for
> +        * validations. This is executed with InitializationPriority.EARLY,
> to
> +        * ensure that the FormEventManager exists vefore any validations
> are added
> +        * for fields within the Form.
> +        *
> +        * @since 5.2.2
> +        */
> +       formEventManager : function(spec) {
> +               $T(spec.formId).formEventManager = new
> Tapestry.FormEventManager(spec);
> +       },
> +
> +       /**
>         * Keys in the masterSpec are ids of field control elements. Value
> is a list
>         * of validation specs. Each validation spec is a 2 or 3 element
> array.
>         */
> @@ -1125,11 +1152,9 @@ Tapestry.Initializer = {
>                                                        var field =
> $(pair.key);
>
>                                                        /*
> -                                                        * Force the
> creation of the form and field event
> -                                                        * managers.
> +                                                        * Force the
> creation of the field event manager.
>                                                         */
>
> -
> $(field.form).getFormEventManager();
>
>  $(field).getFieldEventManager();
>
>                                                        $A(pair.value)
> @@ -1203,8 +1228,6 @@ Tapestry.Initializer = {
>                var hidden = $(spec.element + "-hidden");
>                var form = $(hidden.form);
>
> -               form.getFormEventManager();
> -
>                function runAnimation(makeVisible) {
>                        var effect = makeVisible ?
> Tapestry.ElementEffect[spec.show]
>                                        || Tapestry.ElementEffect.slidedown
> @@ -1499,8 +1522,10 @@ Tapestry.ErrorPopup = Class.create( {
>
>  Tapestry.FormEventManager = Class.create( {
>
> -       initialize : function(form) {
> -               this.form = $(form);
> +       initialize : function(spec) {
> +               this.form = $(spec.formId);
> +               this.validateOnBlur = spec.validate.blur;
> +               this.validateOnSubmit = spec.validate.submit;
>
>                this.form.onsubmit =
> this.handleSubmit.bindAsEventListener(this);
>        },
> @@ -1629,20 +1654,27 @@ Tapestry.FieldEventManager = Class.creat
>
>                this.translator = Prototype.K;
>
> -               document.observe(Tapestry.FOCUS_CHANGE_EVENT,
> function(event) {
> -                       /*
> -                        * If changing focus *within the same form* then
> perform validation.
> -                        * Note that Tapestry.currentFocusField does not
> change until after
> -                        * the FOCUS_CHANGE_EVENT notification.
> -                        */
> -                       if (Tapestry.currentFocusField == this.field
> -                                       && this.field.form ==
> event.memo.form)
> -                               this.validateInput();
> +               var fem = $(this.field.form).getFormEventManager();
>
> -               }.bindAsEventListener(this));
> +               if (fem.validateOnBlur) {
> +
> +                       document.observe(Tapestry.FOCUS_CHANGE_EVENT,
> function(event) {
> +                               /*
> +                                * If changing focus *within the same form*
> then perform
> +                                * validation. Note that
> Tapestry.currentFocusField does not
> +                                * change until after the
> FOCUS_CHANGE_EVENT notification.
> +                                */
> +                               if (Tapestry.currentFocusField ==
> this.field
> +                                               && this.field.form ==
> event.memo.form)
> +                                       this.validateInput();
> +
> +                       }.bindAsEventListener(this));
> +               }
>
> -
> $(this.field.form).observe(Tapestry.FORM_VALIDATE_FIELDS_EVENT,
> -
> this.validateInput.bindAsEventListener(this));
> +               if (fem.validateOnSubmit) {
> +
> $(this.field.form).observe(Tapestry.FORM_VALIDATE_FIELDS_EVENT,
> +
> this.validateInput.bindAsEventListener(this));
> +               }
>        },
>
>        /**
>
> Modified:
> tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditRemoveReorder.java
> URL:
> http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditRemoveReorder.java?rev=1025793&r1=1025792&r2=1025793&view=diff
>
> ==============================================================================
> ---
> tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditRemoveReorder.java
> (original)
> +++
> tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditRemoveReorder.java
> Wed Oct 20 23:46:20 2010
> @@ -1,10 +1,10 @@
> -// Copyright 2007 The Apache Software Foundation
> +// Copyright 2007, 2010 The Apache Software Foundation
>  //
>  // Licensed under the Apache License, Version 2.0 (the "License");
>  // you may not use this file except in compliance with the License.
>  // You may obtain a copy of the License at
>  //
> -//     http://www.apache.org/licenses/LICENSE-2.0
> +// http://www.apache.org/licenses/LICENSE-2.0
>  //
>  // Unless required by applicable law or agreed to in writing, software
>  // distributed under the License is distributed on an "AS IS" BASIS,
> @@ -14,13 +14,15 @@
>
>  package org.apache.tapestry5.integration.app1.pages;
>
> +import org.apache.tapestry5.corelib.ClientValidation;
> +
>  public class BeanEditRemoveReorder extends BeanEditorDemo
>  {
>
>     @Override
> -    public boolean getClientValidation()
> +    public ClientValidation getClientValidation()
>     {
> -        return true;
> +        return ClientValidation.BLUR;
>     }
>
>     @Override
>
> Modified:
> tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java
> URL:
> http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java?rev=1025793&r1=1025792&r2=1025793&view=diff
>
> ==============================================================================
> ---
> tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java
> (original)
> +++
> tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java
> Wed Oct 20 23:46:20 2010
> @@ -1,4 +1,4 @@
> -// Copyright 2007 The Apache Software Foundation
> +// Copyright 2007, 2010 The Apache Software Foundation
>  //
>  // Licensed under the Apache License, Version 2.0 (the "License");
>  // you may not use this file except in compliance with the License.
> @@ -20,6 +20,7 @@ import org.apache.tapestry5.annotations.
>  import org.apache.tapestry5.annotations.Persist;
>  import org.apache.tapestry5.annotations.Property;
>  import org.apache.tapestry5.beaneditor.Validate;
> +import org.apache.tapestry5.corelib.ClientValidation;
>  import org.apache.tapestry5.corelib.components.BeanEditForm;
>  import org.apache.tapestry5.integration.app1.data.RegistrationData;
>
> @@ -29,7 +30,7 @@ public class BeanEditorDemo
>     private String message;
>
>     @Component(id = "registrationData", parameters =
> -    { "clientValidation=clientValidation" })
> +    { "clientValidation=prop:clientValidation" })
>     private BeanEditForm form;
>
>     @ApplicationState
> @@ -51,9 +52,9 @@ public class BeanEditorDemo
>         form.clearErrors();
>     }
>
> -    public boolean getClientValidation()
> +    public ClientValidation getClientValidation()
>     {
> -        return false;
> +        return ClientValidation.NONE;
>     }
>
>     public String getPageTitle()
>
> Modified:
> tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ValidBeanEditorDemo.java
> URL:
> http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ValidBeanEditorDemo.java?rev=1025793&r1=1025792&r2=1025793&view=diff
>
> ==============================================================================
> ---
> tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ValidBeanEditorDemo.java
> (original)
> +++
> tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ValidBeanEditorDemo.java
> Wed Oct 20 23:46:20 2010
> @@ -14,13 +14,15 @@
>
>  package org.apache.tapestry5.integration.app1.pages;
>
> +import org.apache.tapestry5.corelib.ClientValidation;
> +
>  public class ValidBeanEditorDemo extends BeanEditorDemo
>  {
>
>     @Override
> -    public boolean getClientValidation()
> +    public ClientValidation getClientValidation()
>     {
> -        return true;
> +        return ClientValidation.BLUR;
>     }
>
>     @Override
> @@ -32,9 +34,9 @@ public class ValidBeanEditorDemo extends
>     Object onCanceledFromRegistrationData()
>     {
>         setMessage("Form was cancelled.");
> -
> +
>         clearErrors();
> -
> +
>         return this;
>     }
>  }
>
>
>


-- 
Best regards,

Igor Drobiazko
http://tapestry5.de

Reply via email to