diff --git a/core/src/main/java/org/apache/struts2/components/UIBean.java b/core/src/main/java/org/apache/struts2/components/UIBean.java index 49d7063e2..5fd99a9b8 100644 --- a/core/src/main/java/org/apache/struts2/components/UIBean.java +++ b/core/src/main/java/org/apache/struts2/components/UIBean.java @@ -39,16 +39,10 @@ import org.apache.struts2.views.util.ContextUtil; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.Writer; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; import java.util.HashMap; -import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; /** * UIBean is the standard superclass of all Struts UI components. @@ -1260,8 +1254,12 @@ public abstract class UIBean extends Component { this.tooltipIconPath = tooltipIconPath; } - public void setDynamicAttributes(Map dynamicAttributes) { - this.dynamicAttributes.putAll(dynamicAttributes); + public void setDynamicAttributes(Map tagDynamicAttributes) { + for (String key : tagDynamicAttributes.keySet()) { + if (!isValidTagAttribute(key)) { + dynamicAttributes.put(key, tagDynamicAttributes.get(key)); + } + } } @Override diff --git a/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java b/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java index d12b3a162..e57932a3b 100644 --- a/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java +++ b/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java @@ -305,10 +305,6 @@ public abstract class AbstractUITag extends ComponentTagSupport implements Dynam } public void setDynamicAttribute(String uri, String localName, Object value) throws JspException { - if (component.isValidTagAttribute(localName)) { - return; - } - if (ComponentUtils.altSyntax(getStack()) && ComponentUtils.isExpression(value)) { dynamicAttributes.put(localName, String.valueOf(ObjectUtils.defaultIfNull(findValue(value.toString()), value))); } else { diff --git a/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java b/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java index 65119447f..bd007e93a 100644 --- a/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java +++ b/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java @@ -89,9 +89,9 @@ public class AnchorTest extends AbstractUITagTest { private AnchorTag createTag() throws JspException { AnchorTag tag = new AnchorTag(); tag.setPageContext(pageContext); - tag.doStartTag(); tag.setId("mylink"); return tag; } + } diff --git a/core/src/test/java/org/apache/struts2/views/jsp/ui/ComponentTest.java b/core/src/test/java/org/apache/struts2/views/jsp/ui/ComponentTest.java index 58a348a6d..124829bd2 100644 --- a/core/src/test/java/org/apache/struts2/views/jsp/ui/ComponentTest.java +++ b/core/src/test/java/org/apache/struts2/views/jsp/ui/ComponentTest.java @@ -120,9 +120,10 @@ public class ComponentTest extends AbstractUITagTest { FormTag tag = new FormTag(); tag.setPageContext(pageContext); - tag.doStartTag(); tag.setDynamicAttribute("uri://some.uri", "includeContext", false); + tag.doStartTag(); + assertTrue(tag.includeContext); } diff --git a/core/src/test/java/org/apache/struts2/views/jsp/ui/RadioTest.java b/core/src/test/java/org/apache/struts2/views/jsp/ui/RadioTest.java index a3d01faa6..d3a9488ac 100644 --- a/core/src/test/java/org/apache/struts2/views/jsp/ui/RadioTest.java +++ b/core/src/test/java/org/apache/struts2/views/jsp/ui/RadioTest.java @@ -185,7 +185,6 @@ public class RadioTest extends AbstractUITagTest { RadioTag tag = new RadioTag(); tag.setPageContext(pageContext); - tag.doStartTag(); tag.setLabel("mylabel"); tag.setName("myname"); tag.setValue("");