特定のタグ内に配置できるような方法で複合コンポーネントを宣言することは可能ですか?
例:
<span>
<n:myComponent/>
</span>
違法になりますが、次の場合:
<div>
<n:myComponent/>
</div>
合法だろう。
特定のタグ内に配置できるような方法で複合コンポーネントを宣言することは可能ですか?
例:
<span>
<n:myComponent/>
</span>
違法になりますが、次の場合:
<div>
<n:myComponent/>
</div>
合法だろう。
ビルド時ではなく、レンダリング時にコンポーネントの兄弟を確認できます。
public void encodeChildren(FacesContext context) {
List<UIComponent> children = getParent().getChildren();
// Loop over children until you find a child which equals to "this".
// Then check if the previous and next sibling contains <span> and </span>.
// ...
if (valid) {
super.encodeChildren(context);
} else {
throw new IllegalArgumentException("n:myComponent can't be placed inside <span>");
}
}
で参照されているUINamingContainer
実装でこれを行うことができます。@FacesComponent
<cc:interface componentType>