JSF コンポーネントのSelectOneRadio
レイアウトは非常に限られているため、カスタム レンダラーを作成しましたが、うまく機能します。ただし、標準の SelectOneRadio レイアウトも使用したい場合があります。そこで、私が作成したカスタム Renderer を利用する新しいコンポーネントを作成することにしましたが、この新しいコンポーネントに の機能を反映させたいのですがSelectOneRadio
、唯一の違いは、私の Renderer を使用することです。この場合、両方を作成して my を使用する必要がありcustom tag
ますcustom component
かcustom renderer
? class
からすべての機能を取得するには、何を拡張する必要がありSelectOneRadio
ますか? いくつかのコードを提供していただければ幸いです。
EDIT
@BalusC: の値を検出しlayout
て正しいレンダラーを委譲するというあなたのアイデアが気に入っています。したがって、layout="div_layout" がある場合はうまく機能しますがpageDirection
、またはlineDirection
である場合は何も表示されません。私がしたことは次のとおりです。クラスを作成し、メソッドextends MenuRenderer
をオーバーライドencodeEnd
するので、そこでこれを行いました
String layout = (String) component.getAttributes().get("layout");
if(layout != null){
if(layout.equals(PAGE_DIRECTION) || layout.equals(LINE_DIRECTION)){
super.encodeEnd(context, component);
return;
} else if (!layout.equals(DIV_LAYOUT)){
//Throw error message
}
}
//Continue with my own renderer code
EDIT2
何も表示されないと言ったとき、私は間違っていました。super.encodeEnd(コンテキスト、コンポーネント); レンダリングしましたが、ラジオをレンダリングする代わりに、select option
タグをレンダリングします。そのため、間違ったレンダラーに委譲しているようです。MenuRenderer の代わりに RadioRenderer を使用する必要があります。