当我尝试从支持 bean 动态生成标签时出现了一个问题。问题是每次选择时出现的下拉列表都会消失,但标签会正确更新。有解决办法吗?
<p:selectCheckboxMenu value="#{formBean.selectedMovies}" label="#{formBean.moviesLabel}" id="Movies" >
<f:selectItems value="#{formBean.movies}" ></f:selectItems>
<p:ajax update="Movies" listener="#{formBean.populateLabel}"></p:ajax>
</p:selectCheckboxMenu>
和
//Backing bean
public void populateLabel() {
/* Populating the label with the selected options */
moviesLabel = new String("");
if (selectedMovies.size() == 0) {
moviesLabel = "Select";
} else {
for (int i = 0; i < selectedMovies.size(); i++) {
if (moviesLabel.length() == 0) {
moviesLabel = selectedMovies.get(i);
} else {
moviesLabel = moviesLabel + "," + selectedMovies.get(i);
}
}
}
}
最佳答案
方法是这样的
将 widgetVar="someVarName"
添加到您的 p:selectCheckboxMenu
并通过添加 oncomplete="someVarName.show()"
p:"ajax
完整代码:
<p:selectCheckboxMenu widgetVar="someVarName" value="#{usersManagmentPage.selectedMovies}"
label="#{usersManagmentPage.moviesLabel}" id="Movies" >
<f:selectItems value="#{usersManagmentPage.movies}" ></f:selectItems>
<p:ajax oncomplete="someVarName.show()" listener="#{usersManagmentPage.populateLabel}" update="Movies" ></p:ajax>
</p:selectCheckboxMenu>
在最新的 PrimeFaces 中,您应该使用 oncomplete="PF('someVarName').show()"
而不是 oncomplete="someVarName.show() "
关于java - 如何更新 p :selectCheckboxMenu without the component being closed after ajax call in primefaces? 的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9964759/