我想在<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?
我不能仅使用复合组件自定义组件。
由于
答案 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>