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 it's 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 Fragments to see how to use 'in-line' panels.
Panels can be used to create dynamic markup hierarchies.
FAQ
Examples
Typical usage
UsersPanel.java:
{panel} 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())); }}); } } {panel}
UsersPanel.html:
{panel} <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> {panel}
That's for your reusable panel, which you can now use anywhere like:
{panel} add(new UsersPanel("users", users); {panel}
and:
{panel} <span wicket:id="users">[users here]</span> {panel}
or for previewability:
{panel} <span wicket:id="users"> <wicket:remove> <table> <tr> <td>mini</td> <td>maxi</td> </tr> </table> <wicket:remove> </span> {panel}
category:FAQ category:Component