diff --git a/apps/showcase/src/main/resources/template/ajaxErrorContainers/controlfooter.ftl b/apps/showcase/src/main/resources/template/ajaxErrorContainers/controlfooter.ftl index 5d27b6f78..89f9f2f79 100644 --- a/apps/showcase/src/main/resources/template/ajaxErrorContainers/controlfooter.ftl +++ b/apps/showcase/src/main/resources/template/ajaxErrorContainers/controlfooter.ftl @@ -22,12 +22,12 @@ ${parameters.after!}<#t/> <#lt/> <#if (parameters.errorposition!"top") == 'bottom'> -<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors[parameters.name]??/> +<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors.get(parameters.name)??/> <#if hasFieldErrors> <#rt/> <#if hasFieldErrors> - <#list fieldErrors[parameters.name] as error> + <#list fieldErrors.get(parameters.name) as error>
${error?html}
<#t/> diff --git a/apps/showcase/src/main/resources/template/ajaxErrorContainers/controlheader-core.ftl b/apps/showcase/src/main/resources/template/ajaxErrorContainers/controlheader-core.ftl index fe0b96c2c..df67d2799 100644 --- a/apps/showcase/src/main/resources/template/ajaxErrorContainers/controlheader-core.ftl +++ b/apps/showcase/src/main/resources/template/ajaxErrorContainers/controlheader-core.ftl @@ -21,12 +21,12 @@ <#-- Always include elements to show errors. They may be filled later via AJAX. --> -<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors[parameters.name]??/> +<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors.get(parameters.name)??/> <#if (parameters.errorposition!"top") == 'top'> <#rt/> <#if hasFieldErrors> - <#list fieldErrors[parameters.name] as error> + <#list fieldErrors.get(parameters.name) as error>
${error?html}
<#t/> diff --git a/core/src/main/resources/template/css_xhtml/checkbox.ftl b/core/src/main/resources/template/css_xhtml/checkbox.ftl index 5bb7eb20c..65d4dccf7 100644 --- a/core/src/main/resources/template/css_xhtml/checkbox.ftl +++ b/core/src/main/resources/template/css_xhtml/checkbox.ftl @@ -23,12 +23,12 @@ NOTE: The 'header' stuff that follows is in this one file for checkbox due to th that for checkboxes we do not want the label field to show up as checkboxes handle their own lables --> -<#assign hasFieldErrors = fieldErrors?? && fieldErrors[parameters.name]??/> +<#assign hasFieldErrors = fieldErrors?? && fieldErrors.get(parameters.name)??/>
<#if parameters.id??>id="wwgrp_${parameters.id}"<#rt/> class="wwgrp"> <#if hasFieldErrors>
<#if parameters.id??>id="wwerr_${parameters.id}"<#rt/> class="wwerr"> -<#list fieldErrors[parameters.name] as error> +<#list fieldErrors.get(parameters.name) as error> <#if parameters.id??> errorFor="${parameters.id}"<#rt/> diff --git a/core/src/main/resources/template/css_xhtml/controlfooter.ftl b/core/src/main/resources/template/css_xhtml/controlfooter.ftl index c4b06b6fb..e7409522d 100644 --- a/core/src/main/resources/template/css_xhtml/controlfooter.ftl +++ b/core/src/main/resources/template/css_xhtml/controlfooter.ftl @@ -31,10 +31,10 @@ ${parameters.after!}<#t/> <#rt/> <#if (parameters.errorposition!"top") == 'bottom'> -<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors[parameters.name]??/> +<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors.get(parameters.name)??/> <#if hasFieldErrors>
<#if parameters.id??>id="wwerr_${parameters.id}"<#rt/> class="wwerr"> -<#list fieldErrors[parameters.name] as error> +<#list fieldErrors.get(parameters.name) as error> <#if parameters.id??> errorFor="${parameters.id}"<#rt/> diff --git a/core/src/main/resources/template/css_xhtml/controlheader-core.ftl b/core/src/main/resources/template/css_xhtml/controlheader-core.ftl index 028957fd4..c0dd653e7 100644 --- a/core/src/main/resources/template/css_xhtml/controlheader-core.ftl +++ b/core/src/main/resources/template/css_xhtml/controlheader-core.ftl @@ -22,13 +22,13 @@ Only show message if errors are available. This will be done if ActionSupport is used. --> -<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors[parameters.name]??/> +<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors.get(parameters.name)??/>
<#if parameters.id??>id="wwgrp_${parameters.id}"<#rt/> class="wwgrp"> <#if (parameters.errorposition!"top") == 'top'> <#if hasFieldErrors>
<#if parameters.id??>id="wwerr_${parameters.id}"<#rt/> class="wwerr"> -<#list fieldErrors[parameters.name] as error> +<#list fieldErrors.get(parameters.name) as error> <#if parameters.id??> errorFor="${parameters.id}"<#rt/> diff --git a/core/src/main/resources/template/simple/css.ftl b/core/src/main/resources/template/simple/css.ftl index f1f07b64f..2e53b16d3 100644 --- a/core/src/main/resources/template/simple/css.ftl +++ b/core/src/main/resources/template/simple/css.ftl @@ -18,7 +18,7 @@ * under the License. */ --> -<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors[parameters.name]??/> +<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors.get(parameters.name)??/> <#if parameters.cssClass?has_content && !(hasFieldErrors && parameters.cssErrorClass??)> class="${parameters.cssClass?html}"<#rt/> <#elseif parameters.cssClass?has_content && (hasFieldErrors && parameters.cssErrorClass??)> diff --git a/core/src/main/resources/template/simple/fielderror.ftl b/core/src/main/resources/template/simple/fielderror.ftl index 0c8545b92..b58092bf0 100644 --- a/core/src/main/resources/template/simple/fielderror.ftl +++ b/core/src/main/resources/template/simple/fielderror.ftl @@ -29,7 +29,7 @@ <#list eKeys as eKey><#t/> <#if (eKey = fieldErrorFieldName)><#t/> <#assign haveMatchedErrorField=true><#t/> - <#assign eValue = fieldErrors[fieldErrorFieldName]><#t/> + <#assign eValue = fieldErrors.get(fieldErrorFieldName)><#t/> <#if (haveMatchedErrorField && (!doneStartUlTag))><#t/> <#if parameters.id?has_content> @@ -69,7 +69,7 @@ > <#list eKeys as eKey><#t/> - <#assign eValue = fieldErrors[eKey]><#t/> + <#assign eValue = fieldErrors.get(eKey)><#t/> <#list eValue as eEachValue><#t/>
  • <#if parameters.escape>${eEachValue!?html}<#else>${eEachValue!}
  • <#t/> diff --git a/core/src/main/resources/template/xhtml/checkbox.ftl b/core/src/main/resources/template/xhtml/checkbox.ftl index 04033c4b3..207a11125 100644 --- a/core/src/main/resources/template/xhtml/checkbox.ftl +++ b/core/src/main/resources/template/xhtml/checkbox.ftl @@ -18,9 +18,9 @@ * under the License. */ --> -<#assign hasFieldErrors = fieldErrors?? && fieldErrors[parameters.name]??/> +<#assign hasFieldErrors = fieldErrors?? && fieldErrors.get(parameters.name)??/> <#if hasFieldErrors> -<#list fieldErrors[parameters.name] as error> +<#list fieldErrors.get(parameters.name) as error> <#if parameters.id??> errorFor="${parameters.id}"<#rt/> diff --git a/core/src/main/resources/template/xhtml/controlfooter.ftl b/core/src/main/resources/template/xhtml/controlfooter.ftl index 7101f6e9b..ea1fcf2dd 100644 --- a/core/src/main/resources/template/xhtml/controlfooter.ftl +++ b/core/src/main/resources/template/xhtml/controlfooter.ftl @@ -22,9 +22,9 @@ ${parameters.after!}<#t/> <#lt/> <#if (parameters.errorposition!"top") == 'bottom'> -<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors[parameters.name]??/> +<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors.get(parameters.name)??/> <#if hasFieldErrors> -<#list fieldErrors[parameters.name] as error> +<#list fieldErrors.get(parameters.name) as error> <#rt/> ${error?html}<#t/> diff --git a/core/src/main/resources/template/xhtml/controlheader-core.ftl b/core/src/main/resources/template/xhtml/controlheader-core.ftl index ebc124ff6..67b2cc381 100644 --- a/core/src/main/resources/template/xhtml/controlheader-core.ftl +++ b/core/src/main/resources/template/xhtml/controlheader-core.ftl @@ -22,10 +22,10 @@ Only show message if errors are available. This will be done if ActionSupport is used. --> -<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors[parameters.name]??/> +<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors.get(parameters.name)??/> <#if (parameters.errorposition!"top") == 'top'> <#if hasFieldErrors> -<#list fieldErrors[parameters.name] as error> +<#list fieldErrors.get(parameters.name) as error> <#rt/> ${error?html}<#t/> diff --git a/core/src/test/java/org/apache/struts2/views/jsp/ui/TextfieldTest.java b/core/src/test/java/org/apache/struts2/views/jsp/ui/TextfieldTest.java index 8bbefcbab..bd52b8ad9 100644 --- a/core/src/test/java/org/apache/struts2/views/jsp/ui/TextfieldTest.java +++ b/core/src/test/java/org/apache/struts2/views/jsp/ui/TextfieldTest.java @@ -145,7 +145,23 @@ public class TextfieldTest extends AbstractUITagTest { verify(TextFieldTag.class.getResource("Textfield-1.txt")); } - + + public void testWW5125() throws Exception { + TestAction testAction = (TestAction) action; + + for(String fieldName : new String[] {"clone", "size", "clear", "values", "hashCode", "isEmpty", "keySet", "entrySet"}) { + testAction.addFieldError(fieldName, fieldName + " error"); + + TextFieldTag tag = new TextFieldTag(); + tag.setPageContext(pageContext); + tag.setName(fieldName); + tag.doStartTag(); + tag.doEndTag(); + } + + verify(TextFieldTag.class.getResource("Textfield-WW-5125.txt")); + } + public void testSimple_recursionTest() throws Exception { TestAction testAction = (TestAction) action; testAction.setFoo("%{1+1}"); diff --git a/core/src/test/resources/org/apache/struts2/views/jsp/ui/Textfield-WW-5125.txt b/core/src/test/resources/org/apache/struts2/views/jsp/ui/Textfield-WW-5125.txt new file mode 100644 index 000000000..5944419f2 --- /dev/null +++ b/core/src/test/resources/org/apache/struts2/views/jsp/ui/Textfield-WW-5125.txt @@ -0,0 +1,80 @@ + + clone error + + + + + + + + size error + + + + + + + + clear error + + + + + + + + values error + + + + + + + + hashCode error + + + + + + + + isEmpty error + + + + + + + + keySet error + + + + + + + + entrySet error + + + + + +