You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

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 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:

    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>
  • No labels