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");