给定:带有以下xhtml
的primefaces 5.3应用程序 <h:form id="form" enctype="multipart/form-data">
<p:messages id="serversMessages" showDetail="true" autoUpdate="true" closable="true" />
<p:selectOneListbox value="#{servers.model.selectedServer}" style="min-width:300px">
<p:ajax event="change" listener="#{servers.onServerSelected}" update=":form" />
<f:selectItems value="#{servers.model.servers}" var="srv" itemValue="#{srv.serverInfoId}" itemLabel="#{srv.name}" />
</p:selectOneListbox>
<p:column><p:inputText value="#{servers.model.edit.name}" /></p:column>
<p:commandButton id="newServerBtn" actionListener="#{servers.onNewServerClicked}" value="New" update=":form"></p:commandButton>
<p:commandButton id="updServerBtn" disabled="#{empty servers.model.selectedServer}" actionListener="#{servers.onSaveClicked}" value="Save" update=":form"></p:commandButton>
<p:commandButton id="tmpServerBtn" actionListener="#{servers.onTempClicked}" value="Temp2" update=":form"></p:commandButton>
</h:form>
何时:我点击了updServerBtn(当选择了列表中的项目时启用了它)
期望:将调用辅助bean方法。
但实际上:不会调用辅助bean方法。
观察:
如果我删除了disabled属性,则会调用辅助bean。
tmpServerBtn调用支持bean方法。
当我点击updServerBtn时,XHR会发生200响应。
分析:
似乎Primefaces决定调用支持bean方法是不值得的。
类似问题
在发布我的问题之前,我确实在这里找到了这篇文章:
commandButton/commandLink/ajax action/listener method not invoked or input value not updated
当我删除updServerBtn的disabled属性时,会调用支持bean方法 。这告诉我,上述帖子中出现问题的可能原因可能并不适用。
答案 0 :(得分:-1)
我想您的问题是,当您从selectOneListBox
中选择服务器时,您的按钮不会更新,因此不会重新计算已禁用的属性。
尝试更改update
更改事件的<p:ajax>
属性。而不是更新:form
尝试更新@form
。