Apache Wicket > Panel
Added by Confluence Administrator, last edited by Jim Hunziker on Jun 21, 2007  (view change)

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>