( Exit | 2011. 07. 05., k – 21:43 )

Pl. így:


public class MenuPanel extends Panel
{
	private static final long serialVersionUID = 1L;

	public MenuPanel(String id)
	{
		super(id);
	}

	@Override
	protected void onInitialize()
	{
		super.onInitialize();

		List<Class<? extends WebPage>> pageClasses = new ArrayList<Class<? extends WebPage>>();
		pageClasses.add(FooPage.class);
		pageClasses.add(BarPage.class);

		RepeatingView menu = new RepeatingView("menu");
		add(menu);

		for (Class<? extends WebPage> pageClass : pageClasses)
		{
			WebMarkupContainer item = new WebMarkupContainer(menu.newChildId());
			menu.add(item);
			Link<Void> link = new BookmarkablePageLink<Void>("link", pageClass);
			item.add(link);

			if (getPage().getClass().equals(pageClass))
			{
				link.add(AttributeModifier.append("class", "current"));
			}
		}
	}
}

Ebben az esetben nem onclick-re dől el, hogy kell -e a class, hiszen az oldal példányosításakor már tudod, hogy melyik link tartozik hozzá. Az oldal onInitialize-ban már ismert. (Az "AttributeModifier.append()" lehet, hogy 1.5 only, de ha 1.4-et használsz, akkor abban is meg kell lennie a párjának. Ez a fajta appender nem törli, ha van másik class a linken (pl.: markup-ból), hanem hozzáfűzi a current-et.)

"a Link meg ugye absztrakt"
Attól még nyugodtan lehet használni, ha kell:


new Link<Void>("link")
{
	@Override
	public void onClick()
	{
		// TODO Auto-generated method stub
	}
}