You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by jh...@apache.org on 2007/08/28 19:38:39 UTC

svn commit: r570496 - in /struts/struts2/trunk/core/src: main/java/org/apache/struts2/components/ main/java/org/apache/struts2/views/annotations/ main/java/org/apache/struts2/views/jsp/ui/ main/resources/template/simple/ site/resources/tags/ajax/ test/...

Author: jholmes
Date: Tue Aug 28 10:38:36 2007
New Revision: 570496

URL: http://svn.apache.org/viewvc?rev=570496&view=rev
Log:
WW-2132 Add support for JSP tag library dynamic attributes

Added:
    struts/struts2/trunk/core/src/main/resources/template/simple/dynamic-attributes.ftl
    struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Anchor-2.txt
Modified:
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Anchor.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Checkbox.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Div.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/File.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Form.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Hidden.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Label.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/OptGroup.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Password.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Reset.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Select.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Submit.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Text.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/TextArea.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/TextField.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/UIBean.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/annotations/StrutsTag.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java
    struts/struts2/trunk/core/src/main/resources/template/simple/a.ftl
    struts/struts2/trunk/core/src/main/resources/template/simple/checkbox.ftl
    struts/struts2/trunk/core/src/main/resources/template/simple/div.ftl
    struts/struts2/trunk/core/src/main/resources/template/simple/file.ftl
    struts/struts2/trunk/core/src/main/resources/template/simple/form.ftl
    struts/struts2/trunk/core/src/main/resources/template/simple/hidden.ftl
    struts/struts2/trunk/core/src/main/resources/template/simple/label.ftl
    struts/struts2/trunk/core/src/main/resources/template/simple/optgroup.ftl
    struts/struts2/trunk/core/src/main/resources/template/simple/password.ftl
    struts/struts2/trunk/core/src/main/resources/template/simple/reset.ftl
    struts/struts2/trunk/core/src/main/resources/template/simple/select.ftl
    struts/struts2/trunk/core/src/main/resources/template/simple/submit.ftl
    struts/struts2/trunk/core/src/main/resources/template/simple/text.ftl
    struts/struts2/trunk/core/src/main/resources/template/simple/textarea.ftl
    struts/struts2/trunk/core/src/site/resources/tags/ajax/a.html
    struts/struts2/trunk/core/src/site/resources/tags/ajax/autocompleter.html
    struts/struts2/trunk/core/src/site/resources/tags/ajax/datetimepicker.html
    struts/struts2/trunk/core/src/site/resources/tags/ajax/div.html
    struts/struts2/trunk/core/src/site/resources/tags/ajax/submit.html
    struts/struts2/trunk/core/src/site/resources/tags/ajax/tabbedpanel.html
    struts/struts2/trunk/core/src/site/resources/tags/ajax/tree.html
    struts/struts2/trunk/core/src/site/resources/tags/ajax/treenode.html
    struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Anchor.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Anchor.java?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Anchor.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Anchor.java Tue Aug 28 10:38:36 2007
@@ -46,7 +46,11 @@
  * </pre>
  *
  */
-@StrutsTag(name="a", tldTagClass="org.apache.struts2.views.jsp.ui.AnchorTag", description="Render a HTML href element that when clicked can optionally call a URL via remote XMLHttpRequest and updates its targets")
+@StrutsTag(
+    name="a",
+    tldTagClass="org.apache.struts2.views.jsp.ui.AnchorTag",
+    description="Render a HTML href element that when clicked can optionally call a URL via remote XMLHttpRequest and updates its targets",
+    allowDynamicAttributes=true)
 public class Anchor extends ClosingUIBean {
     public static final String OPEN_TEMPLATE = "a";
     public static final String TEMPLATE = "a-close";

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Checkbox.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Checkbox.java?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Checkbox.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Checkbox.java Tue Aug 28 10:38:36 2007
@@ -50,7 +50,11 @@
  * </pre>
  *
  */
-@StrutsTag(name="checkbox", tldTagClass="org.apache.struts2.views.jsp.ui.CheckboxTag", description="Render a checkbox input field")
+@StrutsTag(
+    name="checkbox",
+    tldTagClass="org.apache.struts2.views.jsp.ui.CheckboxTag",
+    description="Render a checkbox input field",
+    allowDynamicAttributes=true)
 public class Checkbox extends UIBean {
     final public static String TEMPLATE = "checkbox";
 

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Div.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Div.java?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Div.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Div.java Tue Aug 28 10:38:36 2007
@@ -33,7 +33,11 @@
  * <!-- END SNIPPET: javadoc -->
  *
  */
-@StrutsTag(name="div", tldTagClass="org.apache.struts2.views.jsp.ui.DivTag", description="Render an HTML div")
+@StrutsTag(
+    name="div",
+    tldTagClass="org.apache.struts2.views.jsp.ui.DivTag",
+    description="Render an HTML div",
+    allowDynamicAttributes=true)
 public class Div extends ClosingUIBean {
 
     public static final String TEMPLATE = "div";

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/File.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/File.java?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/File.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/File.java Tue Aug 28 10:38:36 2007
@@ -45,7 +45,11 @@
  * </pre>
  *
  */
-@StrutsTag(name="file", tldTagClass="org.apache.struts2.views.jsp.ui.FileTag", description="Render a file input field")
+@StrutsTag(
+    name="file",
+    tldTagClass="org.apache.struts2.views.jsp.ui.FileTag",
+    description="Render a file input field",
+    allowDynamicAttributes=true)
 public class File extends UIBean {
     private final static Log log = LogFactory.getLog(File.class);
 

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Form.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Form.java?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Form.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Form.java Tue Aug 28 10:38:36 2007
@@ -80,7 +80,11 @@
  * </pre>
  *
  */
-@StrutsTag(name="form", tldTagClass="org.apache.struts2.views.jsp.ui.FormTag", description="Renders an input form")
+@StrutsTag(
+    name="form",
+    tldTagClass="org.apache.struts2.views.jsp.ui.FormTag",
+    description="Renders an input form",
+    allowDynamicAttributes=true)
 public class Form extends ClosingUIBean {
     public static final String OPEN_TEMPLATE = "form";
     public static final String TEMPLATE = "form-close";

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Hidden.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Hidden.java?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Hidden.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Hidden.java Tue Aug 28 10:38:36 2007
@@ -49,7 +49,11 @@
  * </pre>
  *
   */
-@StrutsTag(name="hidden", tldTagClass="org.apache.struts2.views.jsp.ui.HiddenTag", description="Render a hidden input field")
+@StrutsTag(
+    name="hidden",
+    tldTagClass="org.apache.struts2.views.jsp.ui.HiddenTag",
+    description="Render a hidden input field",
+    allowDynamicAttributes=true)
 public class Hidden extends UIBean {
     final public static String TEMPLATE = "hidden";
 

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Label.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Label.java?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Label.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Label.java Tue Aug 28 10:38:36 2007
@@ -53,8 +53,11 @@
  * </pre>
  *
  */
-@StrutsTag(name="label", tldTagClass="org.apache.struts2.views.jsp.ui.LabelTag", description="Render a label that displays" +
-                " read-only information")
+@StrutsTag(
+    name="label",
+    tldTagClass="org.apache.struts2.views.jsp.ui.LabelTag",
+    description="Render a label that displays read-only information",
+    allowDynamicAttributes=true)
 public class Label extends UIBean {
     final public static String TEMPLATE = "label";
 

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/OptGroup.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/OptGroup.java?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/OptGroup.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/OptGroup.java Tue Aug 28 10:38:36 2007
@@ -71,7 +71,11 @@
  * </pre>
  *
  */
-@StrutsTag(name="optgroup", tldTagClass="org.apache.struts2.views.jsp.ui.OptGroupTag", description="Renders a Select Tag's OptGroup Tag")
+@StrutsTag(
+    name="optgroup",
+    tldTagClass="org.apache.struts2.views.jsp.ui.OptGroupTag",
+    description="Renders a Select Tag's OptGroup Tag",
+    allowDynamicAttributes=true)
 public class OptGroup extends Component {
 
     public static final String INTERNAL_LIST_UI_BEAN_LIST_PARAMETER_KEY = "optGroupInternalListUiBeanList";

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Password.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Password.java?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Password.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Password.java Tue Aug 28 10:38:36 2007
@@ -46,7 +46,11 @@
  * </pre>
  *
  */
-@StrutsTag(name="password", tldTagClass="org.apache.struts2.views.jsp.ui.PasswordTag", description="Render an HTML input tag of type password")
+@StrutsTag(
+    name="password",
+    tldTagClass="org.apache.struts2.views.jsp.ui.PasswordTag",
+    description="Render an HTML input tag of type password",
+    allowDynamicAttributes=true)
 public class Password extends TextField {
     final public static String TEMPLATE = "password";
 

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Reset.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Reset.java?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Reset.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Reset.java Tue Aug 28 10:38:36 2007
@@ -56,7 +56,11 @@
  * </pre>
  *
  */
-@StrutsTag(name="reset", tldTagClass="org.apache.struts2.views.jsp.ui.ResetTag", description="Render a reset button")
+@StrutsTag(
+    name="reset",
+    tldTagClass="org.apache.struts2.views.jsp.ui.ResetTag",
+    description="Render a reset button",
+    allowDynamicAttributes=true)
 public class Reset extends FormButton {
     final public static String TEMPLATE = "reset";
 

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Select.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Select.java?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Select.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Select.java Tue Aug 28 10:38:36 2007
@@ -78,7 +78,11 @@
  * <!-- END SNIPPET: exnote -->
  *
  */
-@StrutsTag(name="select", tldTagClass="org.apache.struts2.views.jsp.ui.SelectTag", description="Render a select element")
+@StrutsTag(
+    name="select",
+    tldTagClass="org.apache.struts2.views.jsp.ui.SelectTag",
+    description="Render a select element",
+    allowDynamicAttributes=true)
 public class Select extends ListUIBean {
     final public static String TEMPLATE = "select";
 

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Submit.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Submit.java?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Submit.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Submit.java Tue Aug 28 10:38:36 2007
@@ -45,7 +45,11 @@
  * text shown on the button face, but has issues with Microsoft Internet Explorer at least up to 6.0
  * <!-- END SNIPPET: javadoc -->
  */
-@StrutsTag(name="submit", tldTagClass="org.apache.struts2.views.jsp.ui.SubmitTag", description="Render a submit button")
+@StrutsTag(
+    name="submit",
+    tldTagClass="org.apache.struts2.views.jsp.ui.SubmitTag",
+    description="Render a submit button",
+    allowDynamicAttributes=true)
 public class Submit extends FormButton {
     
     private static final Log LOG = LogFactory.getLog(Submit.class);

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Text.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Text.java?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Text.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Text.java Tue Aug 28 10:38:36 2007
@@ -113,7 +113,11 @@
  * @see Param
  *
  */
-@StrutsTag(name="text", tldTagClass="org.apache.struts2.views.jsp.TextTag", description="Render a I18n text message")
+@StrutsTag(
+    name="text",
+    tldTagClass="org.apache.struts2.views.jsp.TextTag",
+    description="Render a I18n text message",
+    allowDynamicAttributes=true)
 public class Text extends ContextBean implements Param.UnnamedParametric {
     private static final Log LOG = LogFactory.getLog(Text.class);
 

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/TextArea.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/TextArea.java?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/TextArea.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/TextArea.java Tue Aug 28 10:38:36 2007
@@ -44,7 +44,11 @@
  * @see TabbedPanel
  *
  */
-@StrutsTag(name="textarea", tldTagClass="org.apache.struts2.views.jsp.ui.TextareaTag", description="Render HTML textarea tag.")
+@StrutsTag(
+    name="textarea",
+    tldTagClass="org.apache.struts2.views.jsp.ui.TextareaTag",
+    description="Render HTML textarea tag.",
+    allowDynamicAttributes=true)
 public class TextArea extends UIBean {
     final public static String TEMPLATE = "textarea";
 

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/TextField.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/TextField.java?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/TextField.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/TextField.java Tue Aug 28 10:38:36 2007
@@ -51,7 +51,11 @@
  * </pre>
 
  */
-@StrutsTag(name="textfield", tldTagClass="org.apache.struts2.views.jsp.ui.TextFieldTag", description="Render an HTML input field of type text")
+@StrutsTag(
+    name="textfield",
+    tldTagClass="org.apache.struts2.views.jsp.ui.TextFieldTag",
+    description="Render an HTML input field of type text",
+    allowDynamicAttributes=true)
 public class TextField extends UIBean {
     /**
      * The name of the default template for the TextFieldTag

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/UIBean.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/UIBean.java?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/UIBean.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/UIBean.java Tue Aug 28 10:38:36 2007
@@ -21,6 +21,7 @@
 package org.apache.struts2.components;
 
 import java.io.Writer;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -465,6 +466,9 @@
     protected String tooltipDelay;
     protected String tooltipCssClass;
     protected String tooltipIconPath;
+    
+    // dynamic attributes
+    protected Map<String,Object> dynamicAttributes = new HashMap<String,Object>();
 
     protected String defaultTemplateDir;
     protected String defaultUITheme;
@@ -760,9 +764,6 @@
         }
 
 
-
-
-
         // tooltip & tooltipConfig
         if (tooltipConfig != null) {
             addParameter("tooltipConfig", findValue(tooltipConfig));
@@ -821,8 +822,10 @@
             
 
         }
-        evaluateExtraParams();
 
+        addParameter("dynamicAttributes", dynamicAttributes);
+
+        evaluateExtraParams();
     }
 
     protected String escape(String name) {
@@ -1136,5 +1139,9 @@
     @StrutsTagAttribute(description="Icon path used for image that will have the tooltip")
     public void setTooltipIconPath(String tooltipIconPath) {
         this.tooltipIconPath = tooltipIconPath;
+    }
+
+    public void setDynamicAttributes(Map<String,Object> dynamicAttributes) {
+        this.dynamicAttributes = dynamicAttributes;
     }
 }

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/annotations/StrutsTag.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/annotations/StrutsTag.java?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/annotations/StrutsTag.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/annotations/StrutsTag.java Tue Aug 28 10:38:36 2007
@@ -39,4 +39,6 @@
     String tldTagClass();
 
     String description();
+
+    boolean allowDynamicAttributes() default false;
 }

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java Tue Aug 28 10:38:36 2007
@@ -20,6 +20,12 @@
  */
 package org.apache.struts2.views.jsp.ui;
 
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.DynamicAttributes;
+
 import org.apache.struts2.components.UIBean;
 import org.apache.struts2.views.jsp.ComponentTagSupport;
 
@@ -28,7 +34,7 @@
  * Abstract base class for all UI tags.
  *
  */
-public abstract class AbstractUITag extends ComponentTagSupport {
+public abstract class AbstractUITag extends ComponentTagSupport implements DynamicAttributes {
     protected String cssClass;
     protected String cssStyle;
     protected String title;
@@ -71,6 +77,9 @@
     protected String tooltipCssClass;
     protected String tooltipIconPath;
 
+    // dynamic attributes.
+    protected Map<String,Object> dynamicAttributes = new HashMap<String,Object>();
+
     protected void populateParams() {
         super.populateParams();
 
@@ -114,6 +123,8 @@
         uiBean.setAccesskey(accesskey);
         uiBean.setKey(key);
         uiBean.setId(id);
+	
+        uiBean.setDynamicAttributes(dynamicAttributes);
     }
 
     public void setId(String id) {
@@ -266,5 +277,9 @@
 
     public void setLabelSeparator(String labelSeparator) {
         this.labelSeparator = labelSeparator;
-    }    
+    }
+
+    public void setDynamicAttribute(String uri, String localName, Object value) throws JspException {
+        dynamicAttributes.put(localName, value);
+    }
 }

Modified: struts/struts2/trunk/core/src/main/resources/template/simple/a.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/a.ftl?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/a.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/a.ftl Tue Aug 28 10:38:36 2007
@@ -41,4 +41,5 @@
 </#if>
 <#include "/${parameters.templateDir}/simple/scripting-events.ftl" />
 <#include "/${parameters.templateDir}/simple/common-attributes.ftl" />
+<#include "/${parameters.templateDir}/simple/dynamic-attributes.ftl" />
 >

Modified: struts/struts2/trunk/core/src/main/resources/template/simple/checkbox.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/checkbox.ftl?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/checkbox.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/checkbox.ftl Tue Aug 28 10:38:36 2007
@@ -47,5 +47,6 @@
 </#if>
 <#include "/${parameters.templateDir}/simple/scripting-events.ftl" />
 <#include "/${parameters.templateDir}/simple/common-attributes.ftl" />
+<#include "/${parameters.templateDir}/simple/dynamic-attributes.ftl" />
 />
 <input type="hidden" name="__checkbox_${parameters.name?html}" value="${parameters.fieldValue?html}" />

Modified: struts/struts2/trunk/core/src/main/resources/template/simple/div.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/div.ftl?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/div.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/div.ftl Tue Aug 28 10:38:36 2007
@@ -29,4 +29,5 @@
         </#if>
 <#include "/${parameters.templateDir}/simple/scripting-events.ftl" />
 <#include "/${parameters.templateDir}/simple/common-attributes.ftl" />
+<#include "/${parameters.templateDir}/simple/dynamic-attributes.ftl" />
 >

Added: struts/struts2/trunk/core/src/main/resources/template/simple/dynamic-attributes.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/dynamic-attributes.ftl?rev=570496&view=auto
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/dynamic-attributes.ftl (added)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/dynamic-attributes.ftl Tue Aug 28 10:38:36 2007
@@ -0,0 +1,28 @@
+<#--
+/*
+ * $Id: Action.java 502296 2007-02-01 17:33:39Z niallp $
+ *
+ * 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.
+ */
+-->
+<#if (parameters.dynamicAttributes?exists && parameters.dynamicAttributes?size > 0)><#t/>
+    <#assign aKeys = parameters.dynamicAttributes.keySet()><#t/>
+    <#list aKeys as aKey><#t/>
+ ${aKey}="${parameters.dynamicAttributes[aKey]?html}"<#rt/>
+    </#list><#t/> 
+</#if><#t/>
\ No newline at end of file

Modified: struts/struts2/trunk/core/src/main/resources/template/simple/file.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/file.ftl?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/file.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/file.ftl Tue Aug 28 10:38:36 2007
@@ -51,4 +51,5 @@
 </#if>
 <#include "/${parameters.templateDir}/simple/scripting-events.ftl" />
 <#include "/${parameters.templateDir}/simple/common-attributes.ftl" />
+<#include "/${parameters.templateDir}/simple/dynamic-attributes.ftl" />
 />

Modified: struts/struts2/trunk/core/src/main/resources/template/simple/form.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/form.ftl?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/form.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/form.ftl Tue Aug 28 10:38:36 2007
@@ -63,4 +63,5 @@
 <#if parameters.acceptcharset?exists>
  accept-charset="${parameters.acceptcharset?html}"<#rt/>
 </#if>
+<#include "/${parameters.templateDir}/simple/dynamic-attributes.ftl" />
 >

Modified: struts/struts2/trunk/core/src/main/resources/template/simple/hidden.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/hidden.ftl?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/hidden.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/hidden.ftl Tue Aug 28 10:38:36 2007
@@ -34,4 +34,5 @@
 <#if parameters.cssStyle?exists>
  style="${parameters.cssStyle?html}"<#rt/>
 </#if>
+<#include "/${parameters.templateDir}/simple/dynamic-attributes.ftl" />
 />

Modified: struts/struts2/trunk/core/src/main/resources/template/simple/label.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/label.ftl?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/label.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/label.ftl Tue Aug 28 10:38:36 2007
@@ -37,6 +37,7 @@
  for="${parameters.for?html}"<#rt/>
 </#if>
 <#include "/${parameters.templateDir}/simple/common-attributes.ftl" />
+<#include "/${parameters.templateDir}/simple/dynamic-attributes.ftl" />
 ><#rt/>
 <#if parameters.nameValue?exists>
 <@s.property value="parameters.nameValue"/><#t/>

Modified: struts/struts2/trunk/core/src/main/resources/template/simple/optgroup.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/optgroup.ftl?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/optgroup.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/optgroup.ftl Tue Aug 28 10:38:36 2007
@@ -30,6 +30,7 @@
 	<#if optGroupInternalListUiBean.parameters.disabled?default(false)>
 	disabled="disabled"
 	</#if>
+<#include "/${parameters.templateDir}/simple/dynamic-attributes.ftl" />
 >
 
 <#list optGroupInternalListUiBean.parameters.list as optGroupBean>

Modified: struts/struts2/trunk/core/src/main/resources/template/simple/password.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/password.ftl?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/password.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/password.ftl Tue Aug 28 10:38:36 2007
@@ -54,4 +54,5 @@
 </#if>
 <#include "/${parameters.templateDir}/simple/scripting-events.ftl" />
 <#include "/${parameters.templateDir}/simple/common-attributes.ftl" />
+<#include "/${parameters.templateDir}/simple/dynamic-attributes.ftl" />
 />

Modified: struts/struts2/trunk/core/src/main/resources/template/simple/reset.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/reset.ftl?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/reset.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/reset.ftl Tue Aug 28 10:38:36 2007
@@ -36,6 +36,7 @@
 </#if>
 <#include "/${parameters.templateDir}/simple/scripting-events.ftl"/>
 <#include "/${parameters.templateDir}/simple/common-attributes.ftl" />
+<#include "/${parameters.templateDir}/simple/dynamic-attributes.ftl" />
 ><#if parameters.label?exists><@s.property value="parameters.label"/><#rt/></#if></button>
 <#else>
 <input type="reset"<#rt/>
@@ -56,5 +57,6 @@
 </#if>
 <#include "/${parameters.templateDir}/simple/scripting-events.ftl" />
 <#include "/${parameters.templateDir}/simple/common-attributes.ftl" />
+<#include "/${parameters.templateDir}/simple/dynamic-attributes.ftl" />
 />
 </#if>

Modified: struts/struts2/trunk/core/src/main/resources/template/simple/select.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/select.ftl?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/select.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/select.ftl Tue Aug 28 10:38:36 2007
@@ -49,6 +49,7 @@
 </#if>
 <#include "/${parameters.templateDir}/simple/scripting-events.ftl" />
 <#include "/${parameters.templateDir}/simple/common-attributes.ftl" />
+<#include "/${parameters.templateDir}/simple/dynamic-attributes.ftl" />
 >
 <#if parameters.headerKey?exists && parameters.headerValue?exists>
     <option value="${parameters.headerKey?html}"

Modified: struts/struts2/trunk/core/src/main/resources/template/simple/submit.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/submit.ftl?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/submit.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/submit.ftl Tue Aug 28 10:38:36 2007
@@ -45,6 +45,7 @@
 </#if>
 <#include "/${parameters.templateDir}/simple/scripting-events.ftl"/>
 <#include "/${parameters.templateDir}/simple/common-attributes.ftl" />
+<#include "/${parameters.templateDir}/simple/dynamic-attributes.ftl" />
 ><#if parameters.body?length gt 0><@s.property value="parameters.body"/><#elseif parameters.label?exists><@s.property value="parameters.label"/><#rt/></#if></button>
 <#else>
 <#if parameters.type?exists && parameters.type=="image">
@@ -85,5 +86,6 @@
 </#if>
 <#include "/${parameters.templateDir}/simple/scripting-events.ftl" />
 <#include "/${parameters.templateDir}/simple/common-attributes.ftl" />
+<#include "/${parameters.templateDir}/simple/dynamic-attributes.ftl" />
 />
 </#if>

Modified: struts/struts2/trunk/core/src/main/resources/template/simple/text.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/text.ftl?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/text.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/text.ftl Tue Aug 28 10:38:36 2007
@@ -54,4 +54,5 @@
 </#if>
 <#include "/${parameters.templateDir}/simple/scripting-events.ftl" />
 <#include "/${parameters.templateDir}/simple/common-attributes.ftl" />
+<#include "/${parameters.templateDir}/simple/dynamic-attributes.ftl" />
 />

Modified: struts/struts2/trunk/core/src/main/resources/template/simple/textarea.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/textarea.ftl?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/textarea.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/textarea.ftl Tue Aug 28 10:38:36 2007
@@ -50,6 +50,7 @@
 </#if>
 <#include "/${parameters.templateDir}/simple/scripting-events.ftl" />
 <#include "/${parameters.templateDir}/simple/common-attributes.ftl" />
+<#include "/${parameters.templateDir}/simple/dynamic-attributes.ftl" />
 ><#rt/>
 <#if parameters.nameValue?exists>
 <@s.property value="parameters.nameValue"/><#t/>

Modified: struts/struts2/trunk/core/src/site/resources/tags/ajax/a.html
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/site/resources/tags/ajax/a.html?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/site/resources/tags/ajax/a.html (original)
+++ struts/struts2/trunk/core/src/site/resources/tags/ajax/a.html Tue Aug 28 10:38:36 2007
@@ -196,14 +196,6 @@
 					<td align="left" valign="top">Label expression used for rendering a element specific label</td>
 				</tr>
 				<tr>
-					<td align="left" valign="top">labelSeparator</td>
-					<td align="left" valign="top">false</td>
-					<td align="left" valign="top">:</td>
-					<td align="left" valign="top">true</td>
-					<td align="left" valign="top">String</td>
-					<td align="left" valign="top">String that will be appended to the labe</td>
-				</tr>
-				<tr>
 					<td align="left" valign="top">labelposition</td>
 					<td align="left" valign="top">false</td>
 					<td align="left" valign="top"></td>

Modified: struts/struts2/trunk/core/src/site/resources/tags/ajax/autocompleter.html
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/site/resources/tags/ajax/autocompleter.html?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/site/resources/tags/ajax/autocompleter.html (original)
+++ struts/struts2/trunk/core/src/site/resources/tags/ajax/autocompleter.html Tue Aug 28 10:38:36 2007
@@ -236,14 +236,6 @@
 					<td align="left" valign="top">Label expression used for rendering a element specific label</td>
 				</tr>
 				<tr>
-					<td align="left" valign="top">labelSeparator</td>
-					<td align="left" valign="top">false</td>
-					<td align="left" valign="top">:</td>
-					<td align="left" valign="top">true</td>
-					<td align="left" valign="top">String</td>
-					<td align="left" valign="top">String that will be appended to the labe</td>
-				</tr>
-				<tr>
 					<td align="left" valign="top">labelposition</td>
 					<td align="left" valign="top">false</td>
 					<td align="left" valign="top"></td>

Modified: struts/struts2/trunk/core/src/site/resources/tags/ajax/datetimepicker.html
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/site/resources/tags/ajax/datetimepicker.html?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/site/resources/tags/ajax/datetimepicker.html (original)
+++ struts/struts2/trunk/core/src/site/resources/tags/ajax/datetimepicker.html Tue Aug 28 10:38:36 2007
@@ -121,7 +121,7 @@
 					<td align="left" valign="top"></td>
 					<td align="left" valign="top">true</td>
 					<td align="left" valign="top">String</td>
-					<td align="left" valign="top">HTML id attribute</td>
+					<td align="left" valign="top">id for referencing element. For UI and form tags it will be used as HTML id attribute</td>
 				</tr>
 				<tr>
 					<td align="left" valign="top">javascriptTooltip</td>
@@ -146,14 +146,6 @@
 					<td align="left" valign="top">true</td>
 					<td align="left" valign="top">String</td>
 					<td align="left" valign="top">Label expression used for rendering a element specific label</td>
-				</tr>
-				<tr>
-					<td align="left" valign="top">labelSeparator</td>
-					<td align="left" valign="top">false</td>
-					<td align="left" valign="top">:</td>
-					<td align="left" valign="top">true</td>
-					<td align="left" valign="top">String</td>
-					<td align="left" valign="top">String that will be appended to the labe</td>
 				</tr>
 				<tr>
 					<td align="left" valign="top">labelposition</td>

Modified: struts/struts2/trunk/core/src/site/resources/tags/ajax/div.html
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/site/resources/tags/ajax/div.html?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/site/resources/tags/ajax/div.html (original)
+++ struts/struts2/trunk/core/src/site/resources/tags/ajax/div.html Tue Aug 28 10:38:36 2007
@@ -212,14 +212,6 @@
 					<td align="left" valign="top">Label expression used for rendering a element specific label</td>
 				</tr>
 				<tr>
-					<td align="left" valign="top">labelSeparator</td>
-					<td align="left" valign="top">false</td>
-					<td align="left" valign="top">:</td>
-					<td align="left" valign="top">true</td>
-					<td align="left" valign="top">String</td>
-					<td align="left" valign="top">String that will be appended to the labe</td>
-				</tr>
-				<tr>
 					<td align="left" valign="top">labelposition</td>
 					<td align="left" valign="top">false</td>
 					<td align="left" valign="top"></td>

Modified: struts/struts2/trunk/core/src/site/resources/tags/ajax/submit.html
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/site/resources/tags/ajax/submit.html?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/site/resources/tags/ajax/submit.html (original)
+++ struts/struts2/trunk/core/src/site/resources/tags/ajax/submit.html Tue Aug 28 10:38:36 2007
@@ -204,14 +204,6 @@
 					<td align="left" valign="top">Label expression used for rendering a element specific label</td>
 				</tr>
 				<tr>
-					<td align="left" valign="top">labelSeparator</td>
-					<td align="left" valign="top">false</td>
-					<td align="left" valign="top">:</td>
-					<td align="left" valign="top">true</td>
-					<td align="left" valign="top">String</td>
-					<td align="left" valign="top">String that will be appended to the labe</td>
-				</tr>
-				<tr>
 					<td align="left" valign="top">labelposition</td>
 					<td align="left" valign="top">false</td>
 					<td align="left" valign="top"></td>

Modified: struts/struts2/trunk/core/src/site/resources/tags/ajax/tabbedpanel.html
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/site/resources/tags/ajax/tabbedpanel.html?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/site/resources/tags/ajax/tabbedpanel.html (original)
+++ struts/struts2/trunk/core/src/site/resources/tags/ajax/tabbedpanel.html Tue Aug 28 10:38:36 2007
@@ -132,14 +132,6 @@
 					<td align="left" valign="top">Label expression used for rendering a element specific label</td>
 				</tr>
 				<tr>
-					<td align="left" valign="top">labelSeparator</td>
-					<td align="left" valign="top">false</td>
-					<td align="left" valign="top">:</td>
-					<td align="left" valign="top">true</td>
-					<td align="left" valign="top">String</td>
-					<td align="left" valign="top">String that will be appended to the labe</td>
-				</tr>
-				<tr>
 					<td align="left" valign="top">labelposition</td>
 					<td align="left" valign="top">false</td>
 					<td align="left" valign="top"></td>

Modified: struts/struts2/trunk/core/src/site/resources/tags/ajax/tree.html
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/site/resources/tags/ajax/tree.html?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/site/resources/tags/ajax/tree.html (original)
+++ struts/struts2/trunk/core/src/site/resources/tags/ajax/tree.html Tue Aug 28 10:38:36 2007
@@ -220,14 +220,6 @@
 					<td align="left" valign="top">Label expression used for rendering a element specific label</td>
 				</tr>
 				<tr>
-					<td align="left" valign="top">labelSeparator</td>
-					<td align="left" valign="top">false</td>
-					<td align="left" valign="top">:</td>
-					<td align="left" valign="top">true</td>
-					<td align="left" valign="top">String</td>
-					<td align="left" valign="top">String that will be appended to the labe</td>
-				</tr>
-				<tr>
 					<td align="left" valign="top">labelposition</td>
 					<td align="left" valign="top">false</td>
 					<td align="left" valign="top"></td>

Modified: struts/struts2/trunk/core/src/site/resources/tags/ajax/treenode.html
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/site/resources/tags/ajax/treenode.html?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/site/resources/tags/ajax/treenode.html (original)
+++ struts/struts2/trunk/core/src/site/resources/tags/ajax/treenode.html Tue Aug 28 10:38:36 2007
@@ -92,14 +92,6 @@
 					<td align="left" valign="top">Label expression used for rendering tree node label.</td>
 				</tr>
 				<tr>
-					<td align="left" valign="top">labelSeparator</td>
-					<td align="left" valign="top">false</td>
-					<td align="left" valign="top">:</td>
-					<td align="left" valign="top">true</td>
-					<td align="left" valign="top">String</td>
-					<td align="left" valign="top">String that will be appended to the labe</td>
-				</tr>
-				<tr>
 					<td align="left" valign="top">labelposition</td>
 					<td align="left" valign="top">false</td>
 					<td align="left" valign="top"></td>

Modified: struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java?rev=570496&r1=570495&r2=570496&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java (original)
+++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java Tue Aug 28 10:38:36 2007
@@ -28,7 +28,6 @@
  */
 public class AnchorTest extends AbstractUITagTest {
 
-
     public void testSimple() throws Exception {
         TestAction testAction = (TestAction) action;
         testAction.setFoo("bar");
@@ -44,4 +43,21 @@
         verify(AnchorTest.class.getResource("href-1.txt"));
     }
 
+    public void testDynamicAttribute() throws Exception {
+        TestAction testAction = (TestAction) action;
+        testAction.setFoo("bar");
+
+        AnchorTag tag = new AnchorTag();
+        tag.setPageContext(pageContext);
+
+        tag.setId("mylink");
+        tag.setHref("a");
+
+        tag.setDynamicAttribute("uri", "dynAttrName", "dynAttrValue");
+
+        tag.doStartTag();
+        tag.doEndTag();
+
+        verify(AnchorTest.class.getResource("Anchor-2.txt"));
+    }
 }

Added: struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Anchor-2.txt
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Anchor-2.txt?rev=570496&view=auto
==============================================================================
--- struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Anchor-2.txt (added)
+++ struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Anchor-2.txt Tue Aug 28 10:38:36 2007
@@ -0,0 +1,5 @@
+<a
+ id="mylink"
+ href="a"
+ dynAttrName="dynAttrValue">
+</a>