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