Author: mrdon
Date: Sat Feb 16 03:12:16 2008
New Revision: 628262
URL: http://svn.apache.org/viewvc?rev=628262&view=rev
Log:
Adding support for short circut validations in javascript
WW-2270
Modified:
struts/struts2/trunk/core/src/main/resources/template/xhtml/form-close-validate.ftl
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-2.txt
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-22.txt
Modified:
struts/struts2/trunk/core/src/main/resources/template/xhtml/form-close-validate.ftl
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/xhtml/form-close-validate.ftl?rev=628262&r1=628261&r2=628262&view=diff
==============================================================================
---
struts/struts2/trunk/core/src/main/resources/template/xhtml/form-close-validate.ftl
(original)
+++
struts/struts2/trunk/core/src/main/resources/template/xhtml/form-close-validate.ftl
Sat Feb 16 03:12:16 2008
@@ -41,6 +41,7 @@
clearErrorLabels(form);
var errors = false;
+ var continueValidation = true;
<#list parameters.tagNames as tagName>
<#list tag.getValidators("${tagName}") as validator>
// field name: ${validator.fieldName}
@@ -52,14 +53,16 @@
if (field.value == "") {
addError(field, error);
errors = true;
+ <#if validator.shortCircuit>continueValidation = false;</#if>
}
<#elseif validator.validatorType = "requiredstring">
- if (field.value != null && (field.value == "" ||
field.value.replace(/^\s+|\s+$/g,"").length == 0)) {
+ if (continueValidation && field.value != null && (field.value ==
"" || field.value.replace(/^\s+|\s+$/g,"").length == 0)) {
addError(field, error);
errors = true;
+ <#if validator.shortCircuit>continueValidation = false;</#if>
}
<#elseif validator.validatorType = "stringlength">
- if (field.value != null) {
+ if (continueValidation && field.value != null) {
var value = field.value;
<#if validator.trim>
//trim field value
@@ -72,35 +75,40 @@
(${validator.maxLength?c} > -1 && value.length >
${validator.maxLength?c})) {
addError(field, error);
errors = true;
+ <#if validator.shortCircuit>continueValidation =
false;</#if>
}
}
<#elseif validator.validatorType = "regex">
- if (field.value != null &&
!field.value.match("${validator.expression?js_string}")) {
+ if (continueValidation && field.value != null &&
!field.value.match("${validator.expression?js_string}")) {
addError(field, error);
errors = true;
+ <#if validator.shortCircuit>continueValidation = false;</#if>
}
<#elseif validator.validatorType = "email">
- if (field.value != null && field.value.length > 0 &&
field.value.match(/\b(^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@([A-Za-z0-9-])+(\.[A-Za-z0-9-]+)*((\.[A-Za-z0-9]{2,})|(\.[A-Za-z0-9]{2,}\.[A-Za-z0-9]{2,}))$)\b/gi)==null)
{
+ if (continueValidation && field.value != null &&
field.value.length > 0 &&
field.value.match(/\b(^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@([A-Za-z0-9-])+(\.[A-Za-z0-9-]+)*((\.[A-Za-z0-9]{2,})|(\.[A-Za-z0-9]{2,}\.[A-Za-z0-9]{2,}))$)\b/gi)==null)
{
addError(field, error);
errors = true;
+ <#if validator.shortCircuit>continueValidation = false;</#if>
}
<#elseif validator.validatorType = "url">
- if (field.value != null && field.value.length > 0 &&
field.value.match(/(^(ftp|http|https):\/\/(\.[_A-Za-z0-9-]+)*(@?([A-Za-z0-9-])+)?(\.[A-Za-z0-9-]+)*((\.[A-Za-z0-9]{2,})|(\.[A-Za-z0-9]{2,}\.[A-Za-z0-9]{2,}))(:[0-9]+)?([/A-Za-z0-9?#_-]*)?$)/gi)==null)
{
+ if (continueValidation && field.value != null &&
field.value.length > 0 &&
field.value.match(/(^(ftp|http|https):\/\/(\.[_A-Za-z0-9-]+)*(@?([A-Za-z0-9-])+)?(\.[A-Za-z0-9-]+)*((\.[A-Za-z0-9]{2,})|(\.[A-Za-z0-9]{2,}\.[A-Za-z0-9]{2,}))(:[0-9]+)?([/A-Za-z0-9?#_-]*)?$)/gi)==null)
{
addError(field, error);
errors = true;
+ <#if validator.shortCircuit>continueValidation = false;</#if>
}
<#elseif validator.validatorType = "int">
- if (field.value != null) {
+ if (continueValidation && field.value != null) {
if (<#if validator.min?exists>parseInt(field.value) <
${validator.min?c}<#else>false</#if> ||
<#if validator.max?exists>parseInt(field.value) >
${validator.max?c}<#else>false</#if>) {
addError(field, error);
errors = true;
+ <#if validator.shortCircuit>continueValidation =
false;</#if>
}
}
<#elseif validator.validatorType = "double">
- if (field.value != null) {
+ if (continueValidation && field.value != null) {
var value = parseFloat(field.value);
if (<#if validator.minInclusive?exists>value <
${validator.minInclusive?c}<#else>false</#if> ||
<#if validator.maxInclusive?exists>value >
${validator.maxInclusive?c}<#else>false</#if> ||
@@ -108,6 +116,7 @@
<#if validator.maxExclusive?exists>value >=
${validator.maxExclusive?c}<#else>false</#if>) {
addError(field, error);
errors = true;
+ <#if validator.shortCircuit>continueValidation =
false;</#if>
}
}
</#if>
Modified:
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-2.txt
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-2.txt?rev=628262&r1=628261&r2=628262&view=diff
==============================================================================
---
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-2.txt
(original)
+++
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-2.txt
Sat Feb 16 03:12:16 2008
@@ -35,6 +35,7 @@
clearErrorMessages(form);
clearErrorLabels(form);
var errors = false;
+ var continueValidation=true;
return !errors; }
</script>
Modified:
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-22.txt
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-22.txt?rev=628262&r1=628261&r2=628262&view=diff
==============================================================================
---
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-22.txt
(original)
+++
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-22.txt
Sat Feb 16 03:12:16 2008
@@ -35,12 +35,13 @@
clearErrorMessages(form);
clearErrorLabels(form);
var errors = false;
+ var continueValidation = true;
//fieldname:myUpDownSelectTag
//validatorname:int
if(form.elements['myUpDownSelectTag']){
field=form.elements['myUpDownSelectTag'];
var error="bar must be between 6000 and 10000.";
- if(field.value!=null){
+ if(continueValidation && field.value!=null){
if(parseInt(field.value)<6000||parseInt(field.value)>10000){
addError(field,error);
errors=true;