Как очистить доступные элементы p: selectOneMenu перед добавлением новых элементов

Я использую праймеры SelectOneMenu.

У меня есть эта странная проблема добавления раскрывающегося списка selectonemenu на основе предыдущего выбора.

Чтобы проиллюстрировать мою точку зрения, у меня есть список отделов в раскрывающемся списке selectonemenu, который может выбрать персонал. Нижний раскрывающийся список selectonemenu будет заполнен в зависимости от выбранного значения.

Таким образом, в отделе розничной торговли есть 2 подотдела, отделы магазина и отделы продаж и операций.

введите здесь описание изображения

В отделе ресторана есть 3 подотдела: кухня, обслуживающий персонал и кассиры. Когда я выбираю отдел ресторана, в этом случае в раскрывающемся списке нижнего меню selectonemenu должны отображаться только Кухня, Обслуживающие команды и Кассиры. См. изображение ниже.

введите здесь описание изображения

Вместо этого он добавляется к нижнему раскрывающемуся списку 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>();
        }
    }

Любая помощь, пожалуйста? :)


person Lawrence Wong    schedule 07.09.2014    source источник


Ответы (1)


Удалось решить эту проблему с помощью listOfSubDepartment.clear();

person Lawrence Wong    schedule 07.09.2014