Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java selectBooleanCheckbox更新a4j重新渲染器中的属性_Java_Jsf_Jsf 1.2 - Fatal编程技术网

Java selectBooleanCheckbox更新a4j重新渲染器中的属性

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

我正在使用JSF1.2,我想知道我看到的一个行为。我的JSF页面使用a4j:JSF函数启动一个进程,然后使用a4j:poll获取进度百分比。这个过程构建一个对象列表,每个对象又包含一个列表。a4j:jsFunction调用完成后,将重新调用a4j:outputPanel。此面板包含一个selectBooleanCheckbox,该复选框绑定到第二个列表中对象的布尔值:

<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版本中,嵌套的
与输入组件有很多与状态保存相关的问题。请尝试
和/或
。即使只是外环。