first you have to prove that either of those cases is a "violation", i do not see either one of them as being one.
-igor On Sun, Aug 22, 2010 at 2:40 PM, J <bluecar...@gmx.com> wrote: > 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 > > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org