== Juergen Donnerstag <[EMAIL PROTECTED]>
== Scott Sauyet <[EMAIL PROTECTED]>

RFE: allow wicket:id on <body> tag which currently is not possible due
to wickets body onLoad handling.

Okay.  It's at http://tinyurl.com/7azmc [ ... ]

I'll look to see if I can create a patch for this.

Okay, a patch is attached that modifies WebPage and BodyOnloadContainer. It's a suggestion for something less than the wicket:id on the body tag. It simply adds

    public void addBodyAttributeModifier(AttributeModifier modifier)

to WebPage, so that you can do, for instance,

addBodyAttributeModifier(new AttributeModifier("class", true, new Model("blah")));

I don't know if my use-case is enough of a reason to clutter up the interface of WebPage. I also don't know if there is a reason to widen this facility beyond adding AttributeModifiers. But for what it's worth, here is my simple suggestion.

  -- Scott
? lib/commons-logging-1.0.4.jar
? lib/concurrent-1.3.4.jar
? lib/junit-3.8.1.jar
? lib/log4j-1.2.11.jar
? lib/ognl-2.6.7.jar
? lib/servletapi-2.3.jar
? src/test/com/voicetribe/util/parse/metapattern
Index: src/java/wicket/markup/html/BodyOnLoadContainer.java
===================================================================
RCS file: 
/cvsroot/wicket/wicket/src/java/wicket/markup/html/BodyOnLoadContainer.java,v
retrieving revision 1.6
diff -u -r1.6 BodyOnLoadContainer.java
--- src/java/wicket/markup/html/BodyOnLoadContainer.java        2 Oct 2005 
10:06:29 -0000       1.6
+++ src/java/wicket/markup/html/BodyOnLoadContainer.java        23 Nov 2005 
19:08:46 -0000
@@ -17,6 +17,8 @@
  */
 package wicket.markup.html;
 
+import java.util.Iterator;
+
 import wicket.AttributeModifier;
 import wicket.Component;
 import wicket.IComponentResolver;
@@ -75,6 +77,9 @@
             {
                        add(new AttributeModifier("onload", true, new 
Model(onLoad)));
             }
+            for (Iterator it = 
((WebPage)this.getPage()).getBodyAttributeModifiers().iterator(); it.hasNext(); 
) {
+                add((AttributeModifier) it.next());
+            }
            }
            
            // go on with default implementation
Index: src/java/wicket/markup/html/WebPage.java
===================================================================
RCS file: /cvsroot/wicket/wicket/src/java/wicket/markup/html/WebPage.java,v
retrieving revision 1.52
diff -u -r1.52 WebPage.java
--- src/java/wicket/markup/html/WebPage.java    7 Nov 2005 19:41:05 -0000       
1.52
+++ src/java/wicket/markup/html/WebPage.java    23 Nov 2005 19:51:51 -0000
@@ -20,6 +20,8 @@
 import java.io.UnsupportedEncodingException;
 import java.lang.reflect.Method;
 import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Iterator;
 
 import org.apache.commons.logging.Log;
@@ -27,6 +29,7 @@
 
 import wicket.Application;
 import wicket.ApplicationPages;
+import wicket.AttributeModifier;
 import wicket.Component;
 import wicket.IBehaviourListener;
 import wicket.Page;
@@ -474,4 +477,18 @@
        public void afterCallComponent(final Component component, final Method 
method)
        {
        }
+
+    /** AttributeModifiers to be added to the body. */
+    private List bodyAttributeModifiers = new ArrayList();
+
+    public void addBodyAttributeModifier(AttributeModifier modifier) 
+    {
+        bodyAttributeModifiers.add(modifier);
+    }
+
+    List getBodyAttributeModifiers() 
+    {
+        return bodyAttributeModifiers;
+    }
+
 }
\ No newline at end of file

Reply via email to