You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Aaron Freeman (JIRA)" <ji...@apache.org> on 2007/10/23 07:32:39 UTC

[jira] Created: (WW-2270) Generated JavaScript for validators does not honor the short-circuit attribute

Generated JavaScript for validators does not honor the short-circuit attribute
------------------------------------------------------------------------------

                 Key: WW-2270
                 URL: https://issues.apache.org/struts/browse/WW-2270
             Project: Struts 2
          Issue Type: Improvement
          Components: Validation
    Affects Versions: 2.0.10
            Reporter: Aaron Freeman
         Attachments: form-close-validate.ftl

When you put several validators on a field, like a required and a regex validator, you can specify that the second validator should not be run if the first one fails by setting the short-circuit attribute. However, when you set validate='true' on a form, the JavaScript that is generated does not honor the short-circuit attribute. It will always run both validations.

The JavaScript is generated by the Freemarker code in form-close-validate.ftl

I fixed this for my app by adding "var continueValidation = true;" outside the loop, then adding "<#if validator.shortCircuit>continueValidation = false;</#if>" on the line after "errors = true;" in each 'if' block. Then added 'continueValidation && ' to the front of each if.

This seemed to work just fine.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (WW-2270) Generated JavaScript for validators does not honor the short-circuit attribute

Posted by "Don Brown (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/struts/browse/WW-2270?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Don Brown resolved WW-2270.
---------------------------

    Resolution: Fixed
      Assignee: Don Brown

Applied, thanks for the patch!

> Generated JavaScript for validators does not honor the short-circuit attribute
> ------------------------------------------------------------------------------
>
>                 Key: WW-2270
>                 URL: https://issues.apache.org/struts/browse/WW-2270
>             Project: Struts 2
>          Issue Type: Improvement
>          Components: XML Validators
>    Affects Versions: 2.0.10
>            Reporter: Aaron Freeman
>            Assignee: Don Brown
>             Fix For: 2.1.1
>
>         Attachments: form-close-validate.ftl
>
>
> When you put several validators on a field, like a required and a regex validator, you can specify that the second validator should not be run if the first one fails by setting the short-circuit attribute. However, when you set validate='true' on a form, the JavaScript that is generated does not honor the short-circuit attribute. It will always run both validations.
> The JavaScript is generated by the Freemarker code in form-close-validate.ftl
> I fixed this for my app by adding "var continueValidation = true;" outside the loop, then adding "<#if validator.shortCircuit>continueValidation = false;</#if>" on the line after "errors = true;" in each 'if' block. Then added 'continueValidation && ' to the front of each if.
> This seemed to work just fine.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (WW-2270) Generated JavaScript for validators does not honor the short-circuit attribute

Posted by "Aaron Freeman (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/struts/browse/WW-2270?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aaron Freeman updated WW-2270:
------------------------------

    Attachment: form-close-validate.ftl

This is the ftl wih my modifications

> Generated JavaScript for validators does not honor the short-circuit attribute
> ------------------------------------------------------------------------------
>
>                 Key: WW-2270
>                 URL: https://issues.apache.org/struts/browse/WW-2270
>             Project: Struts 2
>          Issue Type: Improvement
>          Components: Validation
>    Affects Versions: 2.0.10
>            Reporter: Aaron Freeman
>         Attachments: form-close-validate.ftl
>
>
> When you put several validators on a field, like a required and a regex validator, you can specify that the second validator should not be run if the first one fails by setting the short-circuit attribute. However, when you set validate='true' on a form, the JavaScript that is generated does not honor the short-circuit attribute. It will always run both validations.
> The JavaScript is generated by the Freemarker code in form-close-validate.ftl
> I fixed this for my app by adding "var continueValidation = true;" outside the loop, then adding "<#if validator.shortCircuit>continueValidation = false;</#if>" on the line after "errors = true;" in each 'if' block. Then added 'continueValidation && ' to the front of each if.
> This seemed to work just fine.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.