如何在Div中动态包装PrimeFaces组件



我想在 <div>标签中动态封闭的primefaces组件。这可能吗?

使用

的示例
<p:inputText /> 

将被渲染为:

<div>
<input id="j_idt18" ...>
</div>

我尝试创建一个自定义组件,以扩展PF的inputText,在渲染器中,我手动封闭了输入文本标记,例如:

@Override
protected void encodeMarkup(FacesContext context,
        org.primefaces.component.inputtext.InputText inputText)
        throws IOException {
    ResponseWriter writer = context.getResponseWriter();
    String clientId = div.getClientId(context);
    writer.startElement("div", div);
    super.encodeMarkup(context, inputText);
    writer.endElement("div");
    }

它可以正常工作,但是当我对InputText组件进行AJAX更新时,DIV会再次恢复并重新创建。我如何防止DIV在标记中放置?

我不能仅使用复合组件自定义组件。

谢谢

将您的输入包装在<h:panelGroup layout="block">

<h:panelGroup layout="block">
    <p:inputText />
</h:panelGroup>

您可以创建一个包装器复合组件,例如 <my:inputText>,通过组件的参数列表公开 <p:inputText>的属性,然后在组件内部包裹 <p:pinputText><div>中。然后在各处使用自定义组件<my:inputText>,而不是<p:inputText>

最新更新