Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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
Jsf Can';t使用ValueChangeListener从我的SelectOne菜单呈现SelectManyCheckbox_Jsf_Selectonemenu_Valuechangelistener_Selectmanycheckbox - Fatal编程技术网

Jsf Can';t使用ValueChangeListener从我的SelectOne菜单呈现SelectManyCheckbox

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

我有一个映射(整数,列表),我想从JSF页面填充它。我只使用JSF,没有Primefaces之类的

在我的JSF页面上,有一个SelectOne菜单,显示地图的每个键,还有一个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被修改。

您是否在某处使用AJAX?你用什么样的表格

使用“不反应”,是指它不会重新渲染,还是说当您在其中选择一个或多个项目时不会发生任何事情

如果您使用AJAX,那么对于给定的代码,selectmany复选框确实不会重新呈现(刷新)。原因是SelectOneMenu没有导致重新渲染某些内容的属性“render”。第三方组件通常有这样的功能,但标准组件只能通过f:ajax标记来实现。此外,不能将非组件ID用作重新渲染目标。字段集不是一个组件


请参见如何使用f:ajax

哦,非常感谢。因为我是从JSF开始的。我支持这一点,试图以一种更简单的方式回应我的需求。因此,我将只添加一个按钮来提交更改,并添加ajax侦听器来刷新视图。目前正在进行此项工作,将随时通知您。谢谢你的帮助