【发布时间】:2023-04-05 14:33:01
【问题描述】:
在以下情况下,我对 Rich:popupPanel 上的数据有疑问:
- 当用户第一次打开弹出面板时,值会从 bean 中获取并显示出来。
- 用户更改了一些值,然后决定不保存更改并点击关闭按钮。
- 然后他再次打开弹出窗口。当对话框再次打开时,在 backing bean 中,相关性的值被正确地更改回以前的值(调用 load()),但此更新不会反映在 UI 中。 用户可以看到他之前(第 2 步)选择的值,而不是支持 bean 上的值。
您是否碰巧知道任何解决方案,一旦在浏览器中打开后备 bean,就可以强制使用来自支持 bean 的值来更新弹出面板的组件? 如果数据显示在单独的页面上,而不是在 popupPanel 上,我没有这个问题,但我需要使用需求中的弹出面板。
代码如下: 1. 打开弹出面板的组件
<a4j:commandLink id="config" value="open" action="#{bean.load()}"
oncomplete="#{rich:component('configPopUp:pp')}.show();" execute="@this">
</a4j:commandLink>
-
弹出式面板
<rich:popupPanel id="ConfigPopUp" width="800" height="350" title=" "> <h:form id="ConfigForm"> <div class="row " style="margin: 0px"> <div > <a4j:commandButton styleClass="pull-right" id="ConfigSave" actionListener="#{bean.saveConfiguration()}" value="#{text['Configuration.save']}" immediate="true"> </a4j:commandButton> </div> </div> <ui:repeat value="#{bean.selectedValues}" var="current" varStatus="i"> <div class="row" style="margin: 0px"> <div class="col-sm-4 col-sm-offset-1 "> <h:outputText value="#{current.text}" /> </div> <div class="col-sm-4 "> <rich:select value="#{current.relevance}"> <f:selectItems value="#{bean.relevanceOptions}"/> <f:ajax event="change" render="@form" execute="@this" /> </rich:select> </div> </div> </ui:repeat> </h:form> </rich:popupPanel>
【问题讨论】:
标签: jsf-2