You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Martin Nielsen <mn...@gmail.com> on 2018/06/11 08:08:50 UTC
Adding components without changing markup
Hello Wicket users
I am trying to figure out how to create a subclass of ListView, which adds
a couple of <div> elements around the contents of the ListItem. The caveat
is that the <div> elements should not be defined in the html Markup.
For example:
-----------------------------------------------------
html
<ul>
<li wicket:id="listRow">
<a wicket:id="contentLink" href="#" ></a>
</li>
</ul>
java
new MyListView("ListRow", someModel) {
@Override
protected void populateItem(ListItem item) {
item.add(new AjaxLink("contentLink"){
//do stuff
});
}
}
-----------------------------------------------------
should yield:
<ul>
<li>
<div></div>
<a href="#" ></a>
<div></div>
</li>
<li>
<div></div>
<a href="#" ></a>
<div></div>
</li>
<li>
<div></div>
<a href="#" ></a>
<div></div>
</li>
...
</ul>
-----------------------------------------------------
If the div's can somehow become components on the java-side, that would be
awesome, but it is not entirely required.
Thanks for your help (in advance)
-Martin
Re: Adding components without changing markup
Posted by Martin Grigorov <mg...@apache.org>.
Hi,
You can use Border component. It will provide the <div>s:
<wicket:border>
<div>...</div>
<wicket:body/>
<div>...</div>
</wicket:border>
In #populateItem():
Link link = ...
MyBorder border = new MyBorder("contentLink");
border.add(link);
listItem.add(border);
Or you can use a Behavior that will use
Component#getResponse().write("<div> ...</div>") in its #beforeRender() and
#afterRender().
Link link = new Link("contentLink") {...};
link.add(new MyBehavior());
listItem.add(link);
On Mon, Jun 11, 2018 at 11:08 AM, Martin Nielsen <mn...@gmail.com> wrote:
> Hello Wicket users
>
> I am trying to figure out how to create a subclass of ListView, which adds
> a couple of <div> elements around the contents of the ListItem. The caveat
> is that the <div> elements should not be defined in the html Markup.
>
> For example:
>
> -----------------------------------------------------
> html
> <ul>
> <li wicket:id="listRow">
> <a wicket:id="contentLink" href="#" ></a>
> </li>
> </ul>
>
> java
>
> new MyListView("ListRow", someModel) {
> @Override
> protected void populateItem(ListItem item) {
> item.add(new AjaxLink("contentLink"){
> //do stuff
> });
> }
> }
>
>
> -----------------------------------------------------
>
> should yield:
> <ul>
> <li>
> <div></div>
> <a href="#" ></a>
> <div></div>
> </li>
> <li>
> <div></div>
> <a href="#" ></a>
> <div></div>
> </li>
> <li>
> <div></div>
> <a href="#" ></a>
> <div></div>
> </li>
> ...
> </ul>
>
> -----------------------------------------------------
>
>
> If the div's can somehow become components on the java-side, that would be
> awesome, but it is not entirely required.
>
> Thanks for your help (in advance)
>
> -Martin
>