我想在 <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>