diff --git a/core/src/main/resources/template/simple/dynamic-attributes.ftl b/core/src/main/resources/template/simple/dynamic-attributes.ftl
index fe82ac698..47a91139f 100644
--- a/core/src/main/resources/template/simple/dynamic-attributes.ftl
+++ b/core/src/main/resources/template/simple/dynamic-attributes.ftl
@@ -18,27 +18,22 @@
* under the License.
*/
-->
+<#function acceptKey(key)>
+ <#if dynamic_attributes_ignore??>
+ <#return !key?starts_with(dynamic_attributes_ignore) >
+ <#else>
+ <#return true>
+ #if>
+#function>
<#if (parameters.dynamicAttributes?? && parameters.dynamicAttributes?size > 0)><#rt/>
<#assign aKeys = parameters.dynamicAttributes.keySet()><#rt/>
-<#list aKeys as aKey><#rt/>
-<#if dynamic_attributes_ignore??>
-<#if !aKey?starts_with(dynamic_attributes_ignore)>
+<#list aKeys?filter(acceptKey) as aKey><#rt/>
<#assign keyValue = parameters.dynamicAttributes.get(aKey)/>
<#if keyValue?is_string>
- <#assign value = struts.translateVariables(keyValue)!keyValue/>
+ <#assign value = struts.translateVariables(keyValue)!keyValue/>
<#else>
- <#assign value = keyValue?string/>
+ <#assign value = keyValue?string/>
#if>
${aKey}="${value}"<#rt/>
-#if>
-<#else>
-<#assign keyValue = parameters.dynamicAttributes.get(aKey)/>
-<#if keyValue?is_string>
- <#assign value = struts.translateVariables(keyValue)!keyValue/>
-<#else>
- <#assign value = keyValue?string/>
-#if>
- ${aKey}="${value}"<#rt/>
-#if>
#list><#rt/>
#if><#rt/>
diff --git a/core/src/test/java/org/apache/struts2/views/freemarker/FreemarkerResultMockedTest.java b/core/src/test/java/org/apache/struts2/views/freemarker/FreemarkerResultMockedTest.java
index a78bcf1a9..99cd4842a 100644
--- a/core/src/test/java/org/apache/struts2/views/freemarker/FreemarkerResultMockedTest.java
+++ b/core/src/test/java/org/apache/struts2/views/freemarker/FreemarkerResultMockedTest.java
@@ -113,12 +113,7 @@ public class FreemarkerResultMockedTest extends StrutsInternalTestCase {
ActionMapping mapping = container.getInstance(ActionMapper.class).getMapping(request, configurationManager);
dispatcher.serviceAction(request, response, mapping);
- String expectedJDK17 =
- ""
- + ""
- + ""
- + "";
- String expectedJDK18 =
+ String expected =
""
+ ""
+ ""
@@ -126,11 +121,7 @@ public class FreemarkerResultMockedTest extends StrutsInternalTestCase {
String result = stringWriter.toString();
- if (result.contains("id=\"test\" foo=\"bar\"")) {
- assertEquals(expectedJDK18, result);
- } else {
- assertEquals(expectedJDK17, result);
- }
+ assertEquals(expected, result);
}
public void testManualListInTemplate() throws Exception {