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-->
- если опция установлена на "выбрать один", тогда зависимое меню будет пустым и текстовое поле.
- я хочу использовать .