You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2010/10/21 01:46:21 UTC
svn commit: r1025793 - in /tapestry/tapestry5/trunk/tapestry-core/src:
main/java/org/apache/tapestry5/corelib/
main/java/org/apache/tapestry5/corelib/components/
main/java/org/apache/tapestry5/services/
main/resources/org/apache/tapestry5/ test/java/or...
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;
}
}