AuthorizeAction で Panel表示制御

@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");