Java selectBooleanCheckbox更新a4j重新渲染器中的属性
我正在使用JSF1.2,我想知道我看到的一个行为。我的JSF页面使用a4j:JSF函数启动一个进程,然后使用a4j:poll获取进度百分比。这个过程构建一个对象列表,每个对象又包含一个列表。a4j:jsFunction调用完成后,将重新调用a4j:outputPanel。此面板包含一个selectBooleanCheckbox,该复选框绑定到第二个列表中对象的布尔值:Java selectBooleanCheckbox更新a4j重新渲染器中的属性,java,jsf,jsf-1.2,Java,Jsf,Jsf 1.2,我正在使用JSF1.2,我想知道我看到的一个行为。我的JSF页面使用a4j:JSF函数启动一个进程,然后使用a4j:poll获取进度百分比。这个过程构建一个对象列表,每个对象又包含一个列表。a4j:jsFunction调用完成后,将重新调用a4j:outputPanel。此面板包含一个selectBooleanCheckbox,该复选框绑定到第二个列表中对象的布尔值: <a4j:jsFunction name="validate" action="#{MigrationWizardVali
<a4j:jsFunction name="validate" action="#{MigrationWizardValidateForm.validate}" reRender="validationResult, done"/>
...
<a4j:outputPanel id="validationResult">
<ui:repeat value="#{MigrationWizardValidateForm.validationErrors}" var="validationError">
<ui:repeat value="#{validationError.assignmentVisualisations}" var="assignmentVisualisation">
<h:selectBooleanCheckbox value="#{assignmentVisualisation.assignment.mainLocation}"
...
...
相同形式的a4j:poll和a4j:jsFunction导致了问题。将轮询以单独的形式显示进度可以解决此问题。看起来像assignment可视化.assignment.mainLocation
以默认值false
开始,然后更新。否。我的问题是,它最初是真的,而在a4j重新渲染时,JSF将其设置为false。下面是我的日志记录:set-true/onadd-true/onget-true/set-false/onget-false/onget-false。初始集合是对象的加载,当添加到列表中时,它仍然是真的,当外部重复获取数据时,它是真的,然后突然有一个集合…再次,看起来像assignmentVisualization.assignment.mainLocation
默认值是false
(查看您的实体中是否有true
作为默认值). 然后,假设assignmentvisualization
是一个请求管理bean,您只需在其中创建assignment
的新实例,它就会将assignment.mainLocation
设置为false
。如果您想通过实例维护此bean的状态,请将托管bean的作用域从请求更改为会话,或者因为您使用的是JSF 1.2+RichFaces 3.x,您可以将其保留在请求作用域中,并将@KeepAlive
添加到托管bean类中。哦,对不起,我理解了。bean的请求范围已经是@org.ajax4jsf.model.KeepAlive。ajax请求在多次轮询后正确获取列表。bean的构造函数在第一次加载页面时只被调用一次。不确定JSF 1.2,但在早期的Mojarra 2.x版本中,嵌套的
与输入组件有很多与状态保存相关的问题。请尝试
和/或
。即使只是外环。