如何在添加新项目之前清除p:selectOneMenu的可用项目

时间:2014-09-07 17:28:25

标签: jsf primefaces selectonemenu

我使用的是Primefaces SelectOneMenu。

我根据以前的选择添加了selectonemenu下拉列表这个奇怪的问题。

为了说明我的观点,我在工作人员可以选择的selectonemenu下拉列表中有一个部门列表。底部selectonemenu下拉列表将根据所选值填充。

因此,在零售店部门,有2个子部门商店展示和销售及运营团队。

enter image description here

餐厅部门有3个子部门,即厨房,服务团队和收银员。 当我选择餐厅部门时,在这种情况下,它应该只在底部的selectonemenu下拉菜单中显示厨房,服务团队和收银员。见下图。

enter image description here

相反,它正在添加到底部的selectonemenu下拉列表。 如何清除列表以确保不显示先前的选择?

我的代码。

<p:outputLabel for="department" value="Department: " />
                        <p:selectOneMenu id="department" value="#{staffBean.department}" style="width:150px">
                            <p:ajax listener="#{staffBean.onDepartmentChange()}" update="subdepartment" />
                            <f:selectItem itemLabel="Select Department" itemValue="" noSelectionOption="true" />
                            <f:selectItems value="#{staffBean.returnDepartment(staffBean.staff.location_staff.type)}" />
                        </p:selectOneMenu>
                        <p:message for="department" />

                        <p:outputLabel for="subdepartment" value="Sub Department: " />
                        <p:selectOneMenu id="subdepartment" value="#{staffBean.subDepartment}" style="width:150px">
                            <f:selectItem itemLabel="Select Sub Department" itemValue="" noSelectionOption="true" />
                            <f:selectItems value="#{staffBean.listOfSubDepartment}" />
                        </p:selectOneMenu>
                        <p:message for="subdepartment" />

这是onDepartmentChange的代码

public void onDepartmentChange() {

        if(department !=null && !department.equals(""))
        {
            listOfSubDepartment = staffSession.getAllSubDepartments(department);
        }
        else
        {
            listOfSubDepartment = new ArrayList<String>();
        }
    }

请帮忙吗? :)

1 个答案:

答案 0 :(得分:0)

使用listOfSubDepartment.clear();

管理解决此问题