wicket:id を取り除く場合

Wicket で、タグに記述する wicket:id を取り除く場合、
通常は、WebApplication の init() の中で、以下を実行する。

getMarkupSettings().setStripWicketTags(true);


そうではなく、1つのタグの wicket:id を取り除く場合は、
対応するコンポーネントにビヘビアを追加する。

public class StripWicketTagsBehavior extends AbstractBehavior{
   @Override
   public void beforeRender(Component cpt){
      cpt.getApplication().getMarkupSettings().setStripWicketTags(true);
   }

   @Override
   public void onRendered(Component cpt){
      cpt.getApplication().getMarkupSettings().setStripWicketTags(false);
   }

}
このようなビヘビアを用意して、Pageクラスで

Component c = // 何か.....

c.add(new StripWicketTagsBehavior());

add(c);

とすると、Component c のタグだけ wicket:id が取り除かれる。

ページの継承を行った場合、

<wicket:child><wicket:extend>
:
</wicket:extend></wicket:child>

何もしないとこれが残されるが、WebApplication の init() の中で
getMarkupSettings().setStripWicketTags(true);
を、実行した場合は、<wicket:child> と <wicket:extend>は、跡形もなく消える。