diff --git a/apps/showcase/src/main/resources/template/ajaxErrorContainers/controlfooter.ftl b/apps/showcase/src/main/resources/template/ajaxErrorContainers/controlfooter.ftl
index 588b400c0..ccba70757 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} <#t/>
#list>
#if>
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 4ea2e6db5..3b6ffb4c9 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} <#t/>
#list>
#if>
diff --git a/core/src/main/resources/template/css_xhtml/checkbox.ftl b/core/src/main/resources/template/css_xhtml/checkbox.ftl
index fc2b0c58c..8fe7000d4 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/>#if> class="wwgrp">
<#if hasFieldErrors>
<#if parameters.id??>id="wwerr_${parameters.id}"<#rt/>#if> 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 d90fa7b55..492a0dbee 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>
<#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/>#if> 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 d7aacf602..daf775299 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/>#if> class="wwgrp">
<#if (parameters.errorposition!"top") == 'top'>
<#if hasFieldErrors>
<#if parameters.id??>id="wwerr_${parameters.id}"<#rt/>#if> 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 9980c737b..fdd3bb888 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}"<#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 41951a46c..dbda26a7b 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 @@
#if>
>
<#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!}<#else>${eEachValue!?no_esc}#if>
#list><#t/>
diff --git a/core/src/main/resources/template/xhtml/checkbox.ftl b/core/src/main/resources/template/xhtml/checkbox.ftl
index edaa5182c..ceef16849 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 10cf7f9e9..65d657a72 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}<#t/>
diff --git a/core/src/main/resources/template/xhtml/controlheader-core.ftl b/core/src/main/resources/template/xhtml/controlheader-core.ftl
index 986ed1540..894f3faee 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}<#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 |
+
+
+ |
+ |
+
+