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

Reply via email to