2014-10-17 55 views
0

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

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

我能够从活动数据库中获取的价值和第一列表框中显示出来:

<p:selectOneListbox value="#{activityController.itemsAvailableSelectOne}"> 
    <f:selectItems value="#{activityController.items}" var="item" 
     itemValue="#{item}" itemLabel="#{item.activityName}"/> 
</p:selectOneListbox> 

我将如何得到有关实现第二个列表框?

回答

0

你可以试试这个:

你的第一个selectOneListbox:

<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> 

二:

<p:selectOneListbox value="#{activityController.subItem}" id="listBox2"> 
    <f:selectItems value="#{activityController.subItems}" var="item" 
    itemValue="#{item}" itemLabel="#{item.activityName}"/>  
</p:selectOneListbox> 

辅助Bean:

public void itemChange() { 
// load stuff based on selected item 
} 
+0

谢谢,但我该如何将点击listBox1的项目发送到后台bean? – schen 2014-10-17 17:12:52

+0

当侦听器被触发时,值将被设置在“listBox1”的“value”属性中,所以在这个例子中,值将在“itemsAvailableSelectOne”中可用。 – 2014-10-17 17:36:48

+0

你试过这个吗? – 2014-10-17 20:49:08