バナナと outputText の 2 つの要素があり、バナナはカスタム JSF コンポーネントであり、バナナ レンダラーでは、指定された要素を囲む HTML を生成したいと考えています。
xhtml:
<h:outputText id="theApple" value="This is an Apple" />
.
.
.
<my:banana for="theApple" link="http://www.banana.com" />
バナナレンダラー(ターゲット要素をアンカーリンクで囲みます):
@Override
public void encodeBegin(FacesContext context, UIComponent component) throws IOException {
ResponseWriter responseWriter = context.getResponseWriter();
Banana banana = Banana.class.cast(component);
responseWriter.startElement("a", null);
responseWriter.writeAttribute("id", banana.getClientId(context), null);
responseWriter.writeAttribute("href", banana.getLink(), null);
}
@Override
public void encodeEnd(FacesContext context, UIComponent component) throws IOException {
ResponseWriter responseWriter = context.getResponseWriter();
Banana banana = Banana.class.cast(component);
responseWriter.endElement("a");
}
私が達成したいこと:
<a href="http://www.banana.com">This is an Apple</a>
.
.
.
ご覧のとおり、バナナ コンポーネントではなく、「for」属性を使用して対象となる要素をエンコードしたいと考えています。私が見た最も近い例は PrimeFaces のツールチップですが、「for」属性がどのように使用されているかはよくわかりません。 http://www.primefaces.org/showcase/ui/overlay/tooltip/tooltipOptions.xhtml#
誰かが私を正しい方向に向けることができれば、本当に感謝しています。ありがとうございました。