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

Reply via email to