我有一个要从 JSF 页面填充的地图(整数,列表)。我只使用 JSF,没有 Primefaces 之类的。
在我的 JSF 页面上,有一个 selectOneMenu 用于显示我的 Map 的每个键,还有一个 selectManyBox 用于为每个键选择值。
我希望能够在提交整个地图之前保存每个状态。
看我的豆子:
@ManagedBean(name="myBean")
@SessionScoped
public class MyBean implements Serializable {
(...)
public void refresh(ValueChangeEvent e)
{
if (idRole==-1){ //to check if its just the first selection
setKey((int)e.getNewValue());
}
else{
myObject.getMap().put(key,listOfValuesSelected); //put current manycheckbox values in last selected key
setKey((int)e.getNewValue()); //get new key
listOfValuesSelected=MyObject.getMap().get(Key); //refresh the
//selectManyCheckbox for the newly selected key
}
}
我的 JSF 页面
<h:selectOneMenu id="idRole" value="#{myBean.key}" onchange="submit()" valueChangeListener="#{myBean.refresh}" render="checkbox"> >
<f:selectItem itemLabel="" itemValue="" />
<f:selectItems value="#{myBean.listKeys}" />
</h:selectOneMenu>
<fieldset id="checkbox">
<h:selectManyCheckbox value="#{myBean.listOfValuesSelected}">
<f:selectItems value="#{myBean.listeOfValues}" var="n"
itemLabel="#{n.title}" itemValue="#{n.key}"/>
</h:selectManyCheckbox>
</fieldset>
我的真实代码有点乱,我重新排列了一些以满足我的问题的需要,但如果需要,我可以给你真实的代码。
我的问题是 selectmanycheckbox 根本没有“反应”。当我处于调试模式时,我看到 listOfValuesSelected 被修改。