我有一个Map(Integer,List),我想从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没有做出反应&#34;一点都不我看到当我处于调试模式时,listOfValuesSelected被修改。
答案 0 :(得分:0)
你在某个地方使用AJAX吗?你使用什么样的形式?
&#34;没有做出反应&#34;,您是说它没有重新渲染,或者当您选择其中的一个或多个项目时没有任何反应?
如果您使用AJAX然后使用给定代码,则选择多个复选框确实不会重新渲染(刷新)。原因是SelectOneMenu没有属性&#34;渲染&#34;这导致某些东西被重新渲染。第三方组件通常具有这样的功能,但标准组件仅通过f:ajax标签执行此操作。此外,您不能使用非组件ID作为重新渲染目标。 Fieldset不是一个组件。
请参阅http://docs.oracle.com/javaee/6/tutorial/doc/gkabr.html了解如何使用f:ajax