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 を使用する必要があります。