Author: musachy
Date: Fri Mar 27 14:49:39 2009
New Revision: 759162

URL: http://svn.apache.org/viewvc?rev=759162&view=rev
Log:
WW-3054 Broken FreeMarker template for double validation. Test added.

Added:
    
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/DoubleValidationAction.java
    
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/DoubleValidationAction-validation.xml
    
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-24.txt
Modified:
    
struts/struts2/trunk/core/src/main/resources/template/xhtml/form-close-validate.ftl
    
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/FormTagTest.java

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=759162&r1=759161&r2=759162&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
 Fri Mar 27 14:49:39 2009
@@ -110,10 +110,10 @@
             <#elseif validator.validatorType = "double">
             if (continueValidation && field.value != null) {
                 var value = parseFloat(field.value);
-                if (<#if validator.minInclusive??>value < 
${validator.minInclusive?c}<#else>false</#if> ||
-                        <#if validator.maxInclusive??>value > 
${validator.maxInclusive?c}<#else>false</#if> ||
-                        <#if validator.minExclusive??>value <= 
${validator.minExclusive?c}<#else>false</#if> ||
-                        <#if validator.maxExclusive??>value >= 
${validator.maxExclusive?c}<#else>false</#if>) {
+                if (<#if validator.minInclusive??>value < 
${validator.minInclusive}<#else>false</#if> ||
+                        <#if validator.maxInclusive??>value > 
${validator.maxInclusive}<#else>false</#if> ||
+                        <#if validator.minExclusive??>value <= 
${validator.minExclusive}<#else>false</#if> ||
+                        <#if validator.maxExclusive??>value >= 
${validator.maxExclusive}<#else>false</#if>) {
                     addError(field, error);
                     errors = true;
                     <#if validator.shortCircuit>continueValidation = 
false;</#if>

Added: 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/DoubleValidationAction.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/DoubleValidationAction.java?rev=759162&view=auto
==============================================================================
--- 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/DoubleValidationAction.java
 (added)
+++ 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/DoubleValidationAction.java
 Fri Mar 27 14:49:39 2009
@@ -0,0 +1,39 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.struts2.views.jsp.ui;
+
+import com.opensymphony.xwork2.ActionSupport;
+
+/**
+ *
+ */
+public class DoubleValidationAction extends ActionSupport {
+    private double longint;
+
+    public double getLongint() {
+        return longint;
+    }
+
+    public void setLongint(double longint) {
+        this.longint = longint;
+    }
+}

Modified: 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/FormTagTest.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/FormTagTest.java?rev=759162&r1=759161&r2=759162&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/FormTagTest.java
 (original)
+++ 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/FormTagTest.java
 Fri Mar 27 14:49:39 2009
@@ -31,7 +31,6 @@
 import org.apache.struts2.TestAction;
 import org.apache.struts2.TestConfigurationProvider;
 import org.apache.struts2.components.Form;
-import org.apache.struts2.dispatcher.mapper.DefaultActionMapper;
 import org.apache.struts2.views.jsp.AbstractUITagTest;
 import org.apache.struts2.views.jsp.ActionTag;
 
@@ -392,6 +391,88 @@
         verify(FormTag.class.getResource("Formtag-22.txt"));
     }
 
+/**
+     * Tests the numbers are formatted correctly to not break the javascript, 
using doubles
+     */
+    public void testFormWithCustomOnsubmitEnabledWithValidateEnabled4() throws 
Exception {
+
+        final Container cont = container;
+        // used to determined if the form action needs js validation
+        configurationManager.setConfiguration(new 
com.opensymphony.xwork2.config.impl.DefaultConfiguration() {
+            private DefaultConfiguration self = this;
+            public Container getContainer() {
+                return new Container() {
+                    public <T> T inject(Class<T> implementation) {return null;}
+                    public void removeScopeStrategy() {}
+                    public void setScopeStrategy(Strategy scopeStrategy) {}
+                    public <T> T getInstance(Class<T> type, String name) 
{return null;}
+                    public <T> T getInstance(Class<T> type) {return null;}
+                    public Set<String> getInstanceNames(Class<?> type) {return 
null;}
+
+                    public void inject(Object o) {
+                        cont.inject(o);
+                        if (o instanceof Form) {
+                            ((Form)o).setConfiguration(self);
+                        }
+                    }
+                };
+            }
+            public RuntimeConfiguration getRuntimeConfiguration() {
+                return new RuntimeConfiguration() {
+                    public ActionConfig getActionConfig(String namespace, 
String name) {
+                        ActionConfig actionConfig = new ActionConfig("", name, 
DoubleValidationAction.class.getName()) {
+                            public List getInterceptors() {
+                                List interceptors = new ArrayList();
+
+                                ValidationInterceptor validationInterceptor = 
new ValidationInterceptor();
+                                validationInterceptor.setIncludeMethods("*");
+
+                                InterceptorMapping interceptorMapping = new 
InterceptorMapping("validation", validationInterceptor);
+                                interceptors.add(interceptorMapping);
+
+                                return interceptors;
+                            }
+                            public String getClassName() {
+                                return DoubleValidationAction.class.getName();
+                            }
+                        };
+                        return actionConfig;
+                    }
+
+                    public Map getActionConfigs() {
+                        return null;
+                    }
+                };
+            }
+        });
+
+        FormTag tag = new FormTag();
+        tag.setPageContext(pageContext);
+        tag.setName("myForm");
+        tag.setMethod("post");
+        tag.setAction("myAction");
+        tag.setAcceptcharset("UTF-8");
+        tag.setEnctype("myEncType");
+        tag.setTitle("mytitle");
+        tag.setOnsubmit("submitMe()");
+        tag.setValidate("true");
+        tag.setNamespace("");
+
+        UpDownSelectTag t = new UpDownSelectTag();
+        t.setPageContext(pageContext);
+        t.setName("myUpDownSelectTag");
+        t.setList("{}");
+
+        tag.doStartTag();
+        tag.getComponent().getParameters().put("actionClass", 
DoubleValidationAction.class);
+        t.doStartTag();
+        t.doEndTag();
+        tag.doEndTag();
+
+        verify(FormTag.class.getResource("Formtag-24.txt"));
+    }
+
+
     /**
      * This test with form tag validation disabled.
      */

Added: 
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/DoubleValidationAction-validation.xml
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/DoubleValidationAction-validation.xml?rev=759162&view=auto
==============================================================================
--- 
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/DoubleValidationAction-validation.xml
 (added)
+++ 
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/DoubleValidationAction-validation.xml
 Fri Mar 27 14:49:39 2009
@@ -0,0 +1,10 @@
+<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0//EN" 
"http://www.opensymphony.com/xwork/xwork-validator-1.0.dtd";>
+<validators>
+    <field name="myUpDownSelectTag">
+        <field-validator type="double">
+            <param name="minInclusive">6000.10</param>
+            <param name="maxInclusive">10000.10</param>
+            <message>bar must be between ${minInclusive} and 
${maxInclusive}.</message>
+        </field-validator>
+    </field>
+</validators>
\ No newline at end of file

Added: 
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-24.txt
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-24.txt?rev=759162&view=auto
==============================================================================
--- 
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-24.txt
 (added)
+++ 
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-24.txt
 Fri Mar 27 14:49:39 2009
@@ -0,0 +1,54 @@
+<script type="text/javascript" src="/struts/xhtml/validation.js"></script>
+<script type="text/javascript "src="/struts/utils.js"></script>
+<form id="myAction" name="myForm" onsubmit="submitMe(); return 
validateForm_myAction();" action="/myAction.action" method="post" 
enctype="myEncType" title="mytitle" accept-charset="UTF-8" 
onreset="clearErrorMessages(this);clearErrorLabels(this);">
+<table class="wwFormTable"> <tr>
+    <td class="tdLabel"></td>
+    <td>       <script type="text/javascript" 
src="/struts/optiontransferselect.js"></script>
+<table>
+<tr><td>
+<select name="myUpDownSelectTag" size="5" id="myAction_myUpDownSelectTag" 
multiple="multiple">
+</select></td></tr>
+<tr><td>
+               &nbsp;<input type="button" value="^" 
onclick="moveOptionUp(document.getElementById('myAction_myUpDownSelectTag'), 
'key', '');" />&nbsp;
+               &nbsp;<input type="button" value="v" 
onclick="moveOptionDown(document.getElementById('myAction_myUpDownSelectTag'), 
'key', '');" />&nbsp;
+               &nbsp;<input type="button" value="*" 
onclick="selectAllOptions(document.getElementById('myAction_myUpDownSelectTag'),
 'key', '');" />&nbsp;
+</td></tr>
+</table>
+</td>
+</tr>
+</table>
+</form>
+
+
+<script type="text/javascript">
+       var containingForm = document.getElementById("myAction");
+       StrutsUtils.addEventListener(containingForm, "submit",
+                       function(evt) {
+                               var updownselectObj = 
document.getElementById("myAction_myUpDownSelectTag");
+                               selectAllOptionsExceptSome(updownselectObj, 
"key", "");
+                       }, true);
+</script>
+
+<script type="text/javascript">
+    function validateForm_myAction() {
+        form = document.getElementById("myAction");
+        clearErrorMessages(form);
+        clearErrorLabels(form);
+        var errors = false;
+        var continueValidation = true;
+         //fieldname:myUpDownSelectTag
+         //validatorname:double
+         if(form.elements['myUpDownSelectTag']){
+            field=form.elements['myUpDownSelectTag'];
+            var error="bar must be between 6000.10 and 10000.10.";
+            if(continueValidation && field.value!=null){
+                var value = parseFloat(field.value);
+                if(value<6000.10||value>10000.10||false||false){
+                    addError(field,error);
+                    errors=true;
+                 }
+             }
+          }
+          return!errors;
+      }</script>
+


Reply via email to