ひがやすを技術ブログ

電通国際情報サービスのプログラマ

インジェクションされるタグを知る方法

S2JSFでは、HTMLのタグにJSFのタグが自動的に割り当てられますが、どのタグがあり当てられるのかを知るには、NekoHTMLのSAX Parser機能を使って次のようにします。
NekoHTMLでなくても、HTMLをSAXで処理できるものなら大丈夫です。


public void startElement(String namespaceURI, String localName,
String qName, Attributes attributes) {

TagSelector selector = tagProcessorTreeFactory.getTagSelector(
namespaceURI, localName, qName, attributes);
String inject = selector.getInject();
if (inject != null) {
//h:textInputなどの情報が出力される
System.out.println(inject);
} else {
inject = attributes.getValue(
"http://www.seasar.org/maya", "inject");
if (inject != null) {
//m:injectで指定された値が出力される
System.out.println(inject);
} else {
//通常のHTMLのタグ
}
}
}

tagProcessorTreeFactoryはあらかじめ、次のようにして取得しておきます。

tagProcessorTreeFactory = (TagProcessorTreeFactory)
container.getComponent(
TagProcessorTreeFactory.class);