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 PrimeFaces列表框_Jsf_Primefaces_Listbox - Fatal编程技术网

动态更新两个JSF PrimeFaces列表框

动态更新两个JSF PrimeFaces列表框,jsf,primefaces,listbox,Jsf,Primefaces,Listbox,我正在Netbeans上使用JSF Primeface创建一个web应用程序。我要做的是动态更新两个selectOneListBox项。更具体地说,我想根据我在第一个列表框上单击的值更新第二个列表框上的值 例如:我有两个数据库,“活动”和“子活动”,我想在单独的列表框中显示它们。活动可以有音乐、体育、户外、室内等。我想在第一个列表框中显示这些值。当我点击其中一个时,我想得到与特定活动相关联的子活动。因此,在子类别数据库中,有一个子活动列表,每个子活动都有一个与活动数据库中的成员相关联的唯一标识符

我正在Netbeans上使用JSF Primeface创建一个web应用程序。我要做的是动态更新两个selectOneListBox项。更具体地说,我想根据我在第一个列表框上单击的值更新第二个列表框上的值

例如:我有两个数据库,“活动”和“子活动”,我想在单独的列表框中显示它们。活动可以有音乐、体育、户外、室内等。我想在第一个列表框中显示这些值。当我点击其中一个时,我想得到与特定活动相关联的子活动。因此,在子类别数据库中,有一个子活动列表,每个子活动都有一个与活动数据库中的成员相关联的唯一标识符。当我点击活动列表框上的一个条目时,我想拉取特定的子活动并将它们显示在第二个列表框中

我能够从活动数据库中获取值,并将其显示在第一个列表框中:

<p:selectOneListbox value="#{activityController.itemsAvailableSelectOne}">
    <f:selectItems value="#{activityController.items}" var="item"
        itemValue="#{item}" itemLabel="#{item.activityName}"/>
</p:selectOneListbox>
如何实现第二个列表框?

您可以尝试以下方法:

您的第一个SelectOne列表框:

<h:form>
<p:selectOneListbox value="#{activityController.itemsAvailableSelectOne}" id="listBox1">
   <f:selectItems value="#{activityController.items}" var="item"
    itemValue="#{item}" itemLabel="#{item.activityName}"/>
   <p:ajax listener="#{activityController.itemChange}"
                            update="listBox2" />
</p:selectOneListbox>

谢谢,但是如何将在listBox1上单击的项目发送到支持bean?当侦听器被触发时,该值将在listBox1的value属性中设置,因此,在本例中,该值将在itemsAvailableSelectOne中可用。我猜OP的问题是:如何根据activityController.itemsAvailableSelectOne的值填充activityController.subItems?答案是:在中使用适当的操作。所以我尝试过实现它,但是当我单击任何东西时都没有发生任何事情。最后我不得不将activityController.itemsAvailableSelectOne更改为activityController.selected。我不知道为什么,但这导致了事件的触发。
<p:selectOneListbox value="#{activityController.subItem}" id="listBox2">
   <f:selectItems value="#{activityController.subItems}" var="item"
    itemValue="#{item}" itemLabel="#{item.activityName}"/>       
</p:selectOneListbox>
public void itemChange() {
 // load stuff based on selected item
}