Primefaces зависимый selectOneMenu и required= " true"

в моем приложении у меня есть три выпадающих меню (p:selectOneMenu), скажем A, B, C. Среди них два зависимых, скажем B и C. изменяя значение B я динамически загружаю значения на C. Также есть текстовое поле. Значение textbox генерируется ajax, когда событие on-change запускается из этих трех раскрывающихся списков.

вот xhtml:

<p:selectOneMenu id="customerMenu" value="#{adminController.activityDTO.customerId}" required="true" label="Customer Name" style="width: 200px">
    <f:selectItem itemLabel="Select One" itemValue="" />
    <f:selectItems value="#{adminController.customers}" var="customer" itemLabel="#{customer.customerName}" itemValue="#{customer.customerId}" />
    <p:ajax listener="#{adminController.generateActivityName}" update="activityId" />                       
</p:selectOneMenu>

<p:selectOneMenu id="activityTypeMenu" value="#{adminController.activityDTO.activityParentType}" required="true" label="Activity Type"
    style="width: 200px">
    <f:selectItem itemLabel="Select One" itemValue="" />
    <f:selectItems value="#{adminController.activityTypes}" var="activityType" itemLabel="#{activityType.parent}" itemValue="#{activityType.parent}" />
    <p:ajax listener="#{adminController.updateDependentActivity}" update="activitySubType" />
</p:selectOneMenu>

<p:selectOneMenu id="activitySubTypeMenu" value="#{adminController.activityDTO.activitySubType}" required="true" label="Activity Sub Type"
    style="width: 200px">
    <f:selectItem itemLabel="Select One" itemValue="" />
    <f:selectItems value="#{adminController.activitySubTypes}" var="activityType" itemLabel="#{activityType.name}" itemValue="#{activityType.id}" />
    <p:ajax listener="#{adminController.generateActivityId}" update="activityId" />
</p:selectOneMenu>

<p:inputText id="activityId" autocomplete="off" readonly="true" value="#{adminController.activityDTO.activityId}"
    label="#{adbBundle['admin.addActivityPanel.addActivityTable.activityId']}" required="true" />

на activityTypeMenu и activitySubTypeMenu зависят от выбранного значения activityTypeMenu я заполняю activitySubTypeMenu.

теперь проблемы, с которыми я сталкиваюсь:

  • скажем, у меня есть выбор "внешний" и "внутренний" в activityTypeMenu и по умолчанию "выбрать один". Если я выберу "внешний" из activityTypeMenu на activitySubTypeMenu будет иметь "проект"и " сервис". Но тогда, если я выберу по умолчанию "выбрать один"activitySubTypeMenu по-прежнему содержит ранее динамически заполненные значения. Это потому что required="true" атрибут, сопротивляющийся запуску метода бэкэнда, из которого я загружаю динамический значение.
  • я попытался установить itemValue of <f:selectItem itemLabel="Select One" itemValue="" /> to #{null} а затем метод backend запускается при выборе опции "выбрать один", и я могу установить пустой список в activitySubTypes и так activitySubTypeMenu пусто. Но в этом случае required="true" становится бессмысленным. Я имею в виду, у меня также есть кнопка сохранения и при нажатии этой кнопки без выбора какой-либо опции (то есть выбора "выбрать один") из activityTypeMenu и activitySubTypeMenu не бросать ValidatorException и компоненты не получение стиля с помощью класса css ошибок Primefaces.
  • также, если я не установлю itemValue of <f:selectItem itemLabel="Select One" itemValue="" /> to #{null} затем on-изменение выбранного значения на параметр по умолчанию ("выбрать один") не очищает activityId p:inputText. Если я использую #{null} затем я могу получить метод backend, из которого я могу установить значение textbox в пустое.

как ca я решаю эти проблемы и получаю желаемый результат. Чего я хочу, так это:--28-->

  • если опция установлена на "выбрать один", тогда зависимое меню будет пустым и текстовое поле.
  • я хочу использовать .

1 ответов


вы можете использовать EL в