如何在div中动态包装Primefaces组件?

时间:2014-03-06 11:12:40

标签: jsf jsf-2 primefaces

我想在<div>标记中动态包含Primefaces组件。这可能吗?

使用

的示例
<p:inputText /> 

将呈现为:

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

我尝试创建扩展PF的InputText的自定义组件,并在渲染器中手动包含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?

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

由于

2 个答案:

答案 0 :(得分:0)

<h:panelGroup layout="block">中输入您的输入:

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

答案 1 :(得分:0)

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