@AuthorizeAction による制御は、リンクだけに限らずコンポーネントであれば適用できる。
Panel 表示を制御したければ、専用のPanel継承クラスを用意すれば良い。
例)
import org.apache.wicket.authorization.Action;
import org.apache.wicket.authorization.strategies.role.Roles;
import org.apache.wicket.authorization.strategies.role.annotations.AuthorizeAction;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
/**
* ADMIN 権限のみ表示させるPanel はこれを継承する
*/
@AuthorizeAction(action=Action.RENDER , roles={Roles.ADMIN} )
public class AdminRenderPanel extends Panel{
public AdminRenderPanel(String id){
super(id);
}
public AdminRenderPanel(String id,IModel<?> model){
super(id,model);
}
}
==== ADMIN 権限なら表示可能な Panelのhtml は、
<wicket:panel>
<h1>ADMIN 権限で表示される Panel</h1>
</wicket:panel>
==== 上のHTML が、FooPanel.html だとして、 FooPanel.cass は、
public class FooPanel extends AdminRenderPanel{
public AdminPanel(String id){
super(id);
}
}
==== FooPanel を埋め込むHTML ====
<div wicket:id="panel"></div>
==== FooPanel 埋め込みクラスは、通常と同じ
add(new FooPanel("panel");