You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2012/11/02 23:08:38 UTC

[1/2] git commit: Event handlers that detect a validation error should return false to prevent the event from bubbling

Updated Branches:
  refs/heads/5.4-js-rewrite 0e4027a25 -> 658142934


Event handlers that detect a validation error should return false to prevent the event from bubbling


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/65814293
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/65814293
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/65814293

Branch: refs/heads/5.4-js-rewrite
Commit: 658142934fd7d12857c58589c71aeccde7fae372
Parents: 12d4d53
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Fri Nov 2 15:08:34 2012 -0700
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Fri Nov 2 15:08:34 2012 -0700

----------------------------------------------------------------------
 .../META-INF/modules/core/events.coffee            |    5 +++++
 .../META-INF/modules/core/validation.coffee        |   12 +++++++++---
 2 files changed, 14 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/65814293/tapestry-core/src/main/coffeescript/META-INF/modules/core/events.coffee
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/coffeescript/META-INF/modules/core/events.coffee b/tapestry-core/src/main/coffeescript/META-INF/modules/core/events.coffee
index 7286bfb..2f3d3d8 100644
--- a/tapestry-core/src/main/coffeescript/META-INF/modules/core/events.coffee
+++ b/tapestry-core/src/main/coffeescript/META-INF/modules/core/events.coffee
@@ -40,6 +40,10 @@ define
   #
   # A field that is blank but not required is considered valid: the translate and validate steps are skipped.
   #
+  # When a validation error occurs, the event handler should present the validation error (see below), but also
+  # return `false`. This will prevent the event from propogating to other event handlers (Tapestry only supports
+  # a single validation exception per field).
+  #
   # Presenting validation error: The event handler has two options for indicating a validation failure
   # at any of the three steps:
   #
@@ -47,6 +51,7 @@ define
   #   make the validation error visible)
   # * set the `error` property of the memo to the message to display; this will indicate a failure, and the
   #   `showValidationError` event will be triggered automatically.
+  # * In addition, return `false` to prevent the event bubbling (see note above).
   field:
 
     # Perform the optionality check. The event memo includes a `value` property. If the field is required

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/65814293/tapestry-core/src/main/coffeescript/META-INF/modules/core/validation.coffee
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/coffeescript/META-INF/modules/core/validation.coffee b/tapestry-core/src/main/coffeescript/META-INF/modules/core/validation.coffee
index 2783e3c..7440721 100644
--- a/tapestry-core/src/main/coffeescript/META-INF/modules/core/validation.coffee
+++ b/tapestry-core/src/main/coffeescript/META-INF/modules/core/validation.coffee
@@ -94,11 +94,12 @@ define ["_", "core/spi", "core/events", "core/utils", "core/messages", "core/fie
         memo.translated = result
       catch e
         memo.error = (field.attribute "data-translation-message") or e.message or "ERROR"
+        return false
 
     spi.onDocument events.field.optional, "[data-optionality=required]", (event, memo) ->
 
       if utils.isBlank memo.value
-        memo.error =  (this.attribute "data-required-message") || "REQUIRED"
+        memo.error =  (this.attribute "data-required-message") or "REQUIRED"
 
     spi.onDocument events.field.translate, "[data-translation=numeric]", (event, memo) ->
       translate this, memo, false
@@ -111,24 +112,28 @@ define ["_", "core/spi", "core/events", "core/utils", "core/messages", "core/fie
 
       if memo.translated.length < min
         memo.error = (this.attribute "data-min-length-message") or "TOO SHORT"
+        return false
 
     spi.onDocument events.field.validate, "[data-validate-max-length]", (event, memo) ->
-      min = parseInt this.attribute "data-validate-max-length"
+      max = parseInt this.attribute "data-validate-max-length"
 
-      if memo.translated.length > min
+      if memo.translated.length > max
         memo.error = (this.attribute "data-max-length-message") or "TOO LONG"
+        return false
 
     spi.onDocument events.field.validate, "[data-validate-max]", (event, memo) ->
       max = parseInt this.attribute "data-validate-max"
 
       if memo.translated > max
         memo.error = (this.attribute "data-max-message") or "TOO LARGE"
+        return false
 
     spi.onDocument events.field.validate, "[data-validate-min]", (event, memo) ->
       min = parseInt this.attribute "data-validate-min"
 
       if memo.translated < min
         memo.error = (this.attribute "data-min-message") or "TOO SMALL"
+        return false
 
     spi.onDocument events.field.validate, "[data-validate-regexp]", (event, memo) ->
 
@@ -140,6 +145,7 @@ define ["_", "core/spi", "core/events", "core/utils", "core/messages", "core/fie
 
       unless re.test memo.translated
         memo.error = (this.attribute "data-regexp-message") or "INVALID"
+        return false
 
     # Export the number parser, just to be nice (and to support some testing).
     return { parseNumber }
\ No newline at end of file