给定:带有以下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响应。
当它是View或Request作用域但在Session作用域级别工作时,bean无法正常工作。
分析:
似乎Primefaces决定调用支持bean方法是不值得的。
类似问题
在发布我的问题之前,我确实在这里找到了这篇文章:
commandButton/commandLink/ajax action/listener method not invoked or input value not updated
当我删除updServerBtn的disabled属性时,会调用支持bean方法 。这告诉我,上述帖子中可能出现问题的原因可能不适用。
答案 0 :(得分:-1)
我做了以下事情来让事情发挥作用:
我制作了托管bean ViewScoped
我将保存按钮的disabled属性设置为一个简单的布尔值 领域。 (而不是由JSF或者解决的表达式 支持bean,我不知道这是否有问题)