The s:decorate tag rendering custom tag instead of just div
gaspar Feb 25, 2008 3:21 PMI had a problem with s:decorate rendering div in my html which was suposed to have the element li at that place. I like to have a clean html and not too many nested elements so the div s:decorate was rendering didnt suit me. I looked on google and on this formus and i didnt find a solution, so I changed source that s:decorate accepts renderTag attribute (ex.: <s:decorate renderTag="li"></s:decorate> is renderdered with tag <li></li>).
Here im posting the diff and it would be great if u include this or something similar into the trunk.
diff -ur jboss-seam-2.0.1.CR1/ui/src/main/config/component/decorate.xml Copy of jboss-seam-2.0.1.CR1/ui/src/main/config/component/decorate.xml
--- jboss-seam-2.0.1.CR1/ui/src/main/config/component/decorate.xml      2008-02-25 14:41:00.578125000 +0100
+++ Copy of jboss-seam-2.0.1.CR1/ui/src/main/config/component/decorate.xml      2008-02-25 10:41:37.046875000 +0100
@@ -41,6 +41,12 @@
                <description></description>
            </property>
 
+        <property exist="true">
+               <name>renderTag</name>
+               <classname>java.lang.String</classname>
+               <description></description>
+           </property>
+
     </component>
     
 </components>
diff -ur jboss-seam-2.0.1.CR1/ui/src/main/java/org/jboss/seam/ui/component/UIDecorate.java Copy of jboss-seam-2.0.1.CR1/ui/src/main/java/org/jboss/seam/ui/component/UIDecorate.java
--- jboss-seam-2.0.1.CR1/ui/src/main/java/org/jboss/seam/ui/component/UIDecorate.java   2008-02-25 14:21:29.984375000 +0100
+++ Copy of jboss-seam-2.0.1.CR1/ui/src/main/java/org/jboss/seam/ui/component/UIDecorate.java   2008-02-25 14:17:42.750000000 +0100
@@ -73,6 +73,10 @@
 
    public abstract void setStyle(String style);
 
+   public abstract void setRenderTag(String RenderTag);
+
+   public abstract String getRenderTag();
+
 
    public UIComponent getDecoration(String name)
    {
diff -ur jboss-seam-2.0.1.CR1/ui/src/main/java/org/jboss/seam/ui/renderkit/DecorateRendererBase.java Copy of jboss-seam-2.0.1.CR1/ui/src/main/java/org/jboss/seam/ui/renderkit/DecorateRendererBase.java
--- jboss-seam-2.0.1.CR1/ui/src/main/java/org/jboss/seam/ui/renderkit/DecorateRendererBase.java 2008-02-25 14:21:29.984375000 +0100
+++ Copy of jboss-seam-2.0.1.CR1/ui/src/main/java/org/jboss/seam/ui/renderkit/DecorateRendererBase.java 2008-02-25 14:17:42.765625000 +0100
@@ -32,7 +32,9 @@
 
       boolean hasMessage = decorate.hasMessage();
 
-      writer.startElement("div", decorate);
+      String startTag =  decorate.getRenderTag()==null ? "div" : decorate.getRenderTag();
+
+      writer.startElement(startTag, decorate);
       if (decorate.getStyleClass() != null)
       {
           writer.writeAttribute(HTML.STYLE_CLASS_ATTR, decorate.getStyleClass(), HTML.STYLE_CLASS_ATTR);
@@ -65,6 +67,9 @@
       boolean hasMessage = decorate.hasMessage();
       UIComponent aroundDecoration = decorate.getDecoration("aroundField");
       UIComponent aroundInvalidDecoration = decorate.getDecoration("aroundInvalidField");
+
+      String endTag =  decorate.getRenderTag()==null ? "div" : decorate.getRenderTag();
+
       if (aroundDecoration!=null && !hasMessage)
       {
          aroundDecoration.setParent(decorate);
@@ -75,7 +80,7 @@
          aroundInvalidDecoration.setParent(decorate);
          aroundInvalidDecoration.encodeEnd(context);
       }
-      context.getResponseWriter().endElement("div");
+      context.getResponseWriter().endElement(endTag);
 
       Contexts.getEventContext().remove("invalid");
       Contexts.getEventContext().remove("required"); 
    