Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.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
Java 许多SelectOne菜单以不同的行相互依赖_Java_Jsf_Selectonemenu - Fatal编程技术网

Java 许多SelectOne菜单以不同的行相互依赖

Java 许多SelectOne菜单以不同的行相互依赖,java,jsf,selectonemenu,Java,Jsf,Selectonemenu,我有很多行(在一张桌子上)。 在第一行中,我有三个SelectOne菜单: 第一个包含大陆的名称 第二个包含城镇名称(取决于在第一个SelectOne菜单中选择的大陆) 第三个包含村庄名称(取决于在第二个SelectOne菜单中选择的拖车) 在第二行和下一行中,它与three SelectOne菜单相同,但具有其他值 所有这些selectOneMenu都使用转换器。 像这样 <p:selectOneMenu id="id" value="#{xValue}" converter="xCo

我有很多行(在一张桌子上)。
在第一行中,我有三个SelectOne菜单:

  • 第一个包含大陆的名称
  • 第二个包含城镇名称(取决于在第一个SelectOne菜单中选择的大陆)
  • 第三个包含村庄名称(取决于在第二个SelectOne菜单中选择的拖车)
  • 在第二行和下一行中,它与three SelectOne菜单相同,但具有其他值

    所有这些selectOneMenu都使用转换器。 像这样

    <p:selectOneMenu id="id" value="#{xValue}"  converter="xConverter" >
        <f:selectItem itemLabel="-----"  />
        <f:selectItems value="#{lstItemsForSelectOneMenu}" />
        <p:ajax event="valueChange" listener="#{xChange()}" update="thingsToUpdate"/>
    </p:selectOneMenu>
    
    
    
    我的问题是转换器
    xConverter
    在方法
    xChange()
    之前执行

    下面的示例解释了为什么这对我来说是个问题:

    如果用户在第一行中选择:
    大陆:美国。城镇:
    Washington
    3。村庄:
    巴尔的摩

    在第二个选项中,他选择了
    1.大陆:非洲。城镇:突尼斯3。村庄:
    Sfax


    选择
    Sfax
    后,他立即返回第二个SelectOne菜单中的第一行,在这种情况下,系统如何知道用户选择了转换器中第一行的SelectOne菜单


    多亏了

    转换器在渲染组件时执行,因为它们支持选项的渲染,并允许从选定项跳到它所表示的实际对象,反之亦然。如果发生这种情况,可能是因为您的第三个
    selectOneMenu
    正在更新/呈现上一个菜单。在为第三个菜单选择新值时,是否使用
    呈现第二个菜单?是的,第三个SelectOne菜单取决于第二个菜单的值one@Gamb询问您在ajax调用中到底更新了什么。你能把整张桌子的代码写出来吗?如果只给出一个
    selectOneMenu
    标记示例,则很难看到问题。谢谢,我在[如何在java中将参数值传递给转换类?][1][1]中找到了解决方案: