我有一个使用p:dataList
呈现的自动填充列表。如下所示:
<h:panelGroup layout="block" id="outerPanel">
<p:dataList rendered="#{bean.myModel.listOfItems.size()>0}"
var="additionalMP"
value="#{bean.myModel.listOfItems}"
rowIndexVar="index" emptyMessage="">
<div class="wrapper ui-g">
<div>
<p:autoComplete
cache="true"
value="#{bean.myModel.listOfItems[index]}"
completeMethod ="#{handler.getAutoCompleteData}"
rendered ="true"
required="false"
scrollHeight="200"
styleClass="custom"
forceSelection="true">
<p:ajax event="query" global="false"/>
<f:attribute name="filter" value="filterName" />
<f:attribute name="mode" value="edit" />
</p:autoComplete>
</div>
<div>
<p:commandLink value="+ Add" actionListener="#{bean.addAutoComplete()}"
update=":formName:outerPanel"></p:commandLink>
</div>
</div>
</p:dataList>
</h:panelGroup>
因此,Add
按钮会在列表中插入一个新项目,并更新容器面板,以便可以在UI上呈现新添加的项目。
正如预期的那样,面板已更新,我在UI上看到另一个自动完成。但问题是,所有自动完成功能现在都无法正常工作。即他们不再触发查询事件,也没有提出任何建议。
已编辑:使用自动填充字段更新表单部分的部分响应包含一些脚本标记,这些标记可能在页面就绪/加载事件上执行。所以我知道基本上新添加的素面小部件没有被初始化。
我知道如何在DOM中初始化新添加的自动填充功能吗?
答案 0 :(得分:1)
所有这些麻烦的原因是javascript
中的错误,该错误是由于尝试从Bean中scrollTo
来页面上的特定元素而引起的。 Bean中糟糕的代码行是所有麻烦的根源。页面上没有ID为messages
的元素。为什么不应该以这种方式耦合UI的一个明显例子。
RequestContext.getCurrentInstance().scrollTo("formId:messages");