Table of contents
Scope
ComponentBackground | componentJavadoc=Panel
Background
A Panel is a reusable component that holds markup and other components. If you want to reuse a component without copying its markup into each page markup, extend the class Panel:
You can use Markup inheritance with Panels too.
See Panels and borders to see the difference between Panels and Borders and Fragment to see how to use 'in-line' panels.
Panels can be used to create dynamic markup hierarchies.
FAQ
Examples
Typical usage
UsersPanel.java:
public class UsersPanel extends Panel { public UsersPanel(String id, List users) { super(id); add(new ListView("users", users) { public void populateItem(final ListItem p_item) { final User user = (User) p_item.getModelObject(); p_item.add(new Label("username", user.getUsername())); p_item.add(new Label("password", user.getPassword())); }}); } }
UsersPanel.html:
<wicket:panel> <table> <tr wicket:id="users"> <td><span wicket:id="username"></span></td> <td><span wicket:id="password"></span></td> </tr> </table> </wicket:panel>
That's for your reusable panel, which you can now use anywhere like:
add(new UsersPanel("users", users);
and:
<span wicket:id="users">[users here]</span>
or for previewability:
<span wicket:id="users"> <wicket:remove> <table> <tr> <td>mini</td> <td>maxi</td> </tr> </table> <wicket:remove> </span>