【问题标题】:How to dynamically wrap Primefaces component in a div?如何在 div 中动态包装 Primefaces 组件?
【发布时间】:2014-03-06 11:12:39
【问题描述】:

我想在 <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 在标记中重新呈现?

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

谢谢

【问题讨论】:

    标签: jsf jsf-2 primefaces


    【解决方案1】:

    将您的输入封装在&lt;h:panelGroup layout="block"&gt;

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2019-12-07
        • 2020-10-05
        • 2013-02-12
        • 2012-11-25
        • 2012-01-03
        • 2021-01-22
        • 1970-01-01
        • 1970-01-01
        • 2018-05-05
        相关资源
        最近更新 更多