Jsf Can';t使用ValueChangeListener从我的SelectOne菜单呈现SelectManyCheckbox
我有一个映射(整数,列表),我想从JSF页面填充它。我只使用JSF,没有Primefaces之类的 在我的JSF页面上,有一个SelectOne菜单,显示地图的每个键,还有一个selectManyBox,用于选择每个键的值 我希望能够在提交整个地图之前保存每个州 看我的豆豆:Jsf Can';t使用ValueChangeListener从我的SelectOne菜单呈现SelectManyCheckbox,jsf,selectonemenu,valuechangelistener,selectmanycheckbox,Jsf,Selectonemenu,Valuechangelistener,Selectmanycheckbox,我有一个映射(整数,列表),我想从JSF页面填充它。我只使用JSF,没有Primefaces之类的 在我的JSF页面上,有一个SelectOne菜单,显示地图的每个键,还有一个selectManyBox,用于选择每个键的值 我希望能够在提交整个地图之前保存每个州 看我的豆豆: @ManagedBean(name="myBean") @SessionScoped public class MyBean implements Serializable { (...) public v
@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被修改。您是否在某处使用AJAX?你用什么样的表格 使用“不反应”,是指它不会重新渲染,还是说当您在其中选择一个或多个项目时不会发生任何事情 如果您使用AJAX,那么对于给定的代码,selectmany复选框确实不会重新呈现(刷新)。原因是SelectOneMenu没有导致重新渲染某些内容的属性“render”。第三方组件通常有这样的功能,但标准组件只能通过f:ajax标记来实现。此外,不能将非组件ID用作重新渲染目标。字段集不是一个组件
请参见如何使用f:ajax哦,非常感谢。因为我是从JSF开始的。我支持这一点,试图以一种更简单的方式回应我的需求。因此,我将只添加一个按钮来提交更改,并添加ajax侦听器来刷新视图。目前正在进行此项工作,将随时通知您。谢谢你的帮助