我的JSF2项目中存在一些有问题的行为。
我有一个下拉框h:selectOneMenu
,可以对页面onchange = "submit();"
中的刷新进行分组,从而使我的h:dataTable
填充复选框h:selectBooleanCheckbox
。
问题是我没有从复选框中获取所有 ValueChangeEvent
个事件 - 我只获得与初始下拉列表选项中的复选框一样多的事件。例如:
setNodeState
个事件。 MultiFileSelectMgmtBean.fileNames
。我选中所有复选框。setNodeState
个事件被触发,而不是10个,正如我所料。这是xhtml代码:
<tr>
<td>
<h:selectOneMenu
value = "#{MultiFileSelectMgmtBean.selectedLocationId}"
valueChangeListener = "#{MultiFileSelectMgmtBean.LocationChangeEvent}"
onchange = "submit();"
styleClass = "text" style="width: 250px;">
<f:selectItems
value = "#{MultiFileSelectMgmtBean.locationsListItems}"
var = "location"
itemValue = "#{location}"
itemLabel = "#{location.label}">
</f:selectItems>
</h:selectOneMenu>
</td>
</tr>
<tr>
<td>
<h:dataTable value="#{MultiFileSelectMgmtBean.fileNames}" var="filename">
<h:column>
<h:selectBooleanCheckbox value = "#{MultiFileSelectMgmtBean.fileMap[filename]}"
valueChangeListener = "#{MultiFileSelectMgmtBean.setNodeState}"
title = "#{filename}"
/>
<h:outputText value="#{filename}" styleClass="text"/>
</h:column>
</h:dataTable>
</td>
</tr>
答案 0 :(得分:1)
问题是支持bean的consturctor。我总是首先选择初始化下拉框。然后事件会将其更改为其他选择。
现在我将下拉状态保存为会话var。创建bean时,它首先检查是否已保存此状态,如果是,则加载它。