我正在使用primefaces 5.2。
我在<p:selectCheckboxMenu>
内有一个<p:dataTable>
用于选择多个值。 selectCheckboxMenu的标签显示&#39; Select&#39;。我想更新checkboxMenu的标签为&#39;编辑&#39;如果选择了某个值,或者将其保留为&#39;选择&#39;如果没有选择。我希望只有在selectCheckboxMenu关闭后才会发生这种情况。
我提到了stackoverflow问题How to update the label of p:selectCheckboxMenu without the component being closed after ajax call in primefaces?。但是从checkboxMenu中选择一些值后,菜单会闪烁片刻(发生ajax调用并更新标签)并重新出现。但由于两者之间发生了眨眼,这种行为很奇怪。例如。如果我选择菜单中的第一个复选框,然后立即选择第二个复选框,它会闪烁,当它再次出现时,只会选中一个复选框。以下是代码段:
<p:column headerText="Apply To" style="width:120px;text-align:center;">
<p:selectCheckboxMenu id="applyToId" value="#{rule.accountTypes}"
label="#{rule.accountTypeLabel}" widgetVar="accntType">
<f:selectItems value="#{controller.customerAccTypes}" />
<p:ajax oncomplete="PF('accntType').show()"
listener="#{controller.populateLabel(rule,event)}"
update="applyToId"></p:ajax>
</p:selectCheckboxMenu></p:column>
控制器方法:
public void populateLabel(NewRules rule,AjaxBehaviorEvent event) {
if (rule.getAccountTypes().length == 0) {
rule.setAccountTypeLabel("Select One");
} else {
rule.setAccountTypeLabel("Edit");
}}
我不确定我做错了什么。提前谢谢。