That will work, but I already knew that. The whole problem is that it violates Wickets "just/pure HTML" philosphy in that an extra unwanted div (or span) is required in WickedHTML just to make ListView work, even though it's a common scenario. If ListView would follow Wickets philosophy, it would support this WicketHTML: <div wicket:id="products" class="products"> <div wicket:id="product" class="product">Product1....</div> </div>
At the moment, there are two known workarounds in this discussion: 1) Accept the violation of "just HTML" by using the extra DIV. 2) Accept the violation of "just HTML" by using wicket:container. > ----- Original Message ----- > From: Igor Vaynberg > Sent: 08/22/10 11:22 PM > To: users@wicket.apache.org > Subject: Re: setRenderBodyOnly with ListView and attributes > > listviews have nothing to do with tables, they are generic repeaters. > here is the solution > > <html> > <body> > <div class="products"> > <div wicket:id="products" class="product"> > <span wicket:id="product" class="product"></span> > </div> > </div> > </body> > </html> > > the only change needed to code is the tweak to this line: > item.add(new Label("product", product).setRenderBodyOnly(true)); > > -igor > > > On Sat, Aug 21, 2010 at 10:31 AM, Fatih Mehmet UCAR <fmu...@gmail.com> wrote: > > I think ListView is designed for html TABLE and each iteration prints the TR > > tag, see the wiki for example. > > You may wanna use DataView instead to avoid that case. Live examples can be > > reference point for that. > > > > -fmu > > > > ----- Original Message ----- From: "J" <bluecar...@gmx.com> > > To: <users@wicket.apache.org> > > Sent: Saturday, August 21, 2010 4:44 PM > > Subject: Re: setRenderBodyOnly with ListView and attributes > > > > > >> Here is the complete (test) code > >> > >> > >> ============ SOLUTION 1 : wicket:container ============= > >> > >> ++++ TestPage.html ++++ > >> <html> > >> <body> > >> <div class="products"> > >> <wicket:container wicket:id="products"> > >> <div wicket:id="product" class="product"></div> > >> </wicket:container> > >> </div> > >> </body> > >> </html> > >> > >> > >> ++++ TestPage.java ++++ > >> import java.util.Arrays; > >> import java.util.List; > >> import org.apache.wicket.markup.html.WebPage; > >> import org.apache.wicket.markup.html.basic.Label; > >> import org.apache.wicket.markup.html.list.ListItem; > >> import org.apache.wicket.markup.html.list.ListView; > >> > >> public class TestPage extends WebPage { > >> > >> public TestPage() { > >> > >> List products = Arrays.asList("productA", "productB", "productC"); > >> ListView productsView = new ListView("products", products) { > >> protected void populateItem(ListItem item) { > >> String product = (String) item.getModelObject(); > >> item.add(new Label("product", product)); > >> } > >> }; > >> add(productsView); > >> > >> } > >> } > >> > >> ============== SOLUTION 2 : extra div in WicketHTML ================== > >> > >> ++++ TestPage.html ++++ > >> <html> > >> <body> > >> <div class="products"> > >> <div wicket:id="products"> > >> <div wicket:id="product" class="product"></div> > >> </div> > >> </div> > >> </body> > >> </html> > >> > >> > >> ++++ TestPage.java ++++ > >> import java.util.Arrays; > >> import java.util.List; > >> import org.apache.wicket.markup.html.WebPage; > >> import org.apache.wicket.markup.html.basic.Label; > >> import org.apache.wicket.markup.html.list.ListItem; > >> import org.apache.wicket.markup.html.list.ListView; > >> > >> public class TestPage extends WebPage { > >> > >> public TestPage() { > >> > >> List products = Arrays.asList("productA", "productB", "productC"); > >> ListView productsView = new ListView("products", products) { > >> protected void populateItem(ListItem item) { > >> String product = (String) item.getModelObject(); > >> item.add(new Label("product", product)); > >> item.setRenderBodyOnly(true); > >> } > >> }; > >> add(productsView); > >> > >> } > >> } > >> > >> > >> ==== Wanted/Required and generated output of solution1 & 2 === > >> <html> > >> <body> > >> <div class="products"> > >> <div class="product">productA</div> > >> <div class="product">productB</div> > >> <div class="product">productC</div> > >> </div> > >> </body> > >> </html> > >> ========================================================== > >> > >> For this common scenario: > >> -solution 1 violates Wickets "Just HTML" philosophy in that the > >> wicket:container tag is used. > >> -solution 2 violates Wickets "Just HTML" philosophy in that an extra > >> unwanted div is required in WicketHTML (although not visible in the > >> generated HTML). > >> > >> No other solutions have been found/discussed yet. > >> > >> > >>> ----- Original Message ----- > >>> From: Fatih Mehmet UCAR > >>> Sent: 08/21/10 05:02 PM > >>> To: users@wicket.apache.org > >>> Subject: Re: setRenderBodyOnly with ListView and attributes > >>> > >>> send your html and java code, there may be other ways of doing this. > >>> > >>> > >>> ----- Original Message ----- From: "J" <bluecar...@gmx.com> > >>> To: <users@wicket.apache.org> > >>> Sent: Saturday, August 21, 2010 3:29 PM > >>> Subject: Re: setRenderBodyOnly with ListView and attributes > >>> > >>> > >>> >I made a mistake in my first post. The output of wasn't: > >>> > > >>> > <div> > >>> > <div class="product">.....</div> > >>> > <div class="product">.....</div> > >>> > <div class="product">.....</div> > >>> > <div class="product">.....</div> > >>> > </div> > >>> > > >>> > but it was: > >>> > <div class="product">.....</div> > >>> > <div class="product">.....</div> > >>> > <div class="product">.....</div> > >>> > <div class="product">.....</div> > >>> > > >>> > So the outer div is missing. > >>> > Which is caused by item.setRenderBodyOnly(true). But if I disable (set > >>> > > to > >>> > false) this (the default), I get: > >>> > > >>> > <div class="products"><div class="product">.....</div></div> > >>> > <div class="products"><div class="product">.....</div></div> > >>> > <div class="products"><div class="product">.....</div></div> > >>> > <div class="products"><div class="product">.....</div></div> > >>> > > >>> > which is even worse. > >>> > > >>> > A solution (the only?) to this double div problem and at the same time > >>> > > the > >>> > missing attribute problem, is using wicket:container tags. (see > >>> > > >>> > http://apache-wicket.1842946.n4.nabble.com/Panel-in-List-remove-extra-div-td1877053.html > >>> > ) > >>> > This leads to this solution: > >>> > > >>> > > >>> > <div class="products"> > >>> > <wicket:container wicket:id="products"> > >>> > <div class="product" wicket:id="productPanel">.....</div> > >>> > </wicket:container> > >>> > </div> > >>> > > >>> > Wicket:container tags make it ugly imo, because it violates wickts > > >>> > "just > >>> > HTML" philosophy, even though my problem is a very common scenario. > >>> > > >>> > > >>> >> ----- Original Message ----- > >>> >> From: Fatih Mehmet UCAR > >>> >> Sent: 08/21/10 04:05 PM > >>> >> To: users@wicket.apache.org > >>> >> Subject: Re: setRenderBodyOnly with ListView and attributes > >>> >> > >>> >> Add another html div with css class you want around the below list div > >>> >> >> ; > >>> >> > >>> >> <div class="products" wicket:id="productsView"> > >>> >> > >>> >> and for the productsViev in the java code setRenderBodyOnly to true. > >>> >> > >>> >> -fmu > >>> >> > >>> >> > >>> >> ----- Original Message ----- >> From: "J" <bluecar...@gmx.com> > >>> >> To: <users@wicket.apache.org> > >>> >> Sent: Saturday, August 21, 2010 2:49 PM > >>> >> Subject: Re: setRenderBodyOnly with ListView and attributes > >>> >> > >>> >> > >>> >> > It somehow feels bad/wrong to move CSS from WicketHTML to JavaCode, > >>> >> > where > >>> >> > it shouldn't belong, for such a common scenario. > >>> >> > It defeats the purpose of having HTML in Wicket. But there probably > >>> >> > >> > is > >>> >> > no > >>> >> > other way. > >>> >> > > >>> >> > Anyway, thanks for your reply :) > >>> >> > > >>> >> > > >>> >> >> ----- Original Message ----- > >>> >> >> > >>> >> >> From: Fatih Mehmet UCAR > >>> >> >> Sent: 08/21/10 03:43 PM > >>> >> >> To: users@wicket.apache.org > >>> >> >> Subject: Re: setRenderBodyOnly with ListView and attributes > >>> >> >> > >>> >> >> AttributeAppender class will help you to acheive that. > >>> >> >> > >>> >> >> -fmu > >>> >> >> > >>> >> >> ----- Original Message ----- >> >> From: "J" <bluecar...@gmx.com> > >>> >> >> To: <users@wicket.apache.org> > >>> >> >> Sent: Saturday, August 21, 2010 2:24 PM > >>> >> >> Subject: setRenderBodyOnly with ListView and attributes > >>> >> >> > >>> >> >> > >>> >> >> > hi, I want to have Wicket to generate the following HTML >> >> > > >>> >> >> > precisely: > >>> >> >> > > >>> >> >> > <div class="products"> > >>> >> >> > <div class="product">.....</div> > >>> >> >> > <div class="product">.....</div> > >>> >> >> > <div class="product">.....</div> > >>> >> >> > <div class="product">.....</div> > >>> >> >> > </div> > >>> >> >> > > >>> >> >> > But with my code, I don't get further than: > >>> >> >> > > >>> >> >> > <div> > >>> >> >> > <div class="product">.....</div> > >>> >> >> > <div class="product">.....</div> > >>> >> >> > <div class="product">.....</div> > >>> >> >> > <div class="product">.....</div> > >>> >> >> > </div> > >>> >> >> > > >>> >> >> > so the class attribute is missing in the outer div. > >>> >> >> > > >>> >> >> > My Wicket HTML is: > >>> >> >> > <div class="products" wicket:id="productsView"> > >>> >> >> > <div class="product" wicket:id="productPanel">.....</div> > >>> >> >> > </div> > >>> >> >> > > >>> >> >> > > >>> >> >> > My code: > >>> >> >> > ListView productsView = new ListView("productsView", products) { > >>> >> >> > protected void populateItem(ListItem item) { > >>> >> >> > item.setRenderBodyOnly(true); > >>> >> >> > item.add(new ProductPanel("productPanel", >> >> > > >>> >> >> > item.getModelObject())); > >>> >> >> > } > >>> >> >> > }; > >>> >> >> > add(productsView); > >>> >> >> > > >>> >> >> > > >>> >> >> > What is the Wicket way of achieving this? > >>> >> >> > (A solution is to use the wicket:container tag, but that's a bit > >>> >> >> > ugly, > >>> >> >> > right?) > >>> >> >> > > >>> >> >> > > >>> >> >> > --------------------------------------------------------------------- > >>> >> >> > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > >>> >> >> > For additional commands, e-mail: users-h...@wicket.apache.org > >>> >> >> > > >>> >> >> > >>> >> >> > >>> >> >> > >>> >> >> --------------------------------------------------------------------- > >>> >> >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > >>> >> >> For additional commands, e-mail: users-h...@wicket.apache.org > >>> >> > > >>> >> > > >>> >> > --------------------------------------------------------------------- > >>> >> > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > >>> >> > For additional commands, e-mail: users-h...@wicket.apache.org > >>> >> > > >>> >> > >>> >> > >>> >> --------------------------------------------------------------------- > >>> >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > >>> >> For additional commands, e-mail: users-h...@wicket.apache.org > >>> > > >>> > --------------------------------------------------------------------- > >>> > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > >>> > For additional commands, e-mail: users-h...@wicket.apache.org > >>> > > >>> > >>> > >>> --------------------------------------------------------------------- > >>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > >>> For additional commands, e-mail: users-h...@wicket.apache.org > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > >> For additional commands, e-mail: users-h...@wicket.apache.org > >> > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > > For additional commands, e-mail: users-h...@wicket.apache.org > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org