Простые лица зависят от selectOneMenu и required = «true»

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

Вот этот HTML-файл:

<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 будет иметь «Проект» и «Сервис». Но тогда, если я выберу «Select One» по умолчанию,activitySubTypeMenu все еще содержит ранее динамически заполненные значения. Это потому чтоrequired="true" Атрибут Resisting для запуска метода бэкэнда, из которого я загружаю динамическое значение.Я пытался установитьitemValue из<f:selectItem itemLabel="Select One" itemValue="" /> в#{null} а затем бэкэнд-метод срабатывает при выборе опции «Выбрать один», и я могу установить пустой списокactivitySubTypes и таким образомactivitySubTypeMenu получить пустым. Но в этом случаеrequired="true" становится бессмысленным. Я имею в виду, у меня также есть кнопка сохранения и при нажатии на эту кнопку, не выбирая никакой опции (то есть выбирая "Выбрать один") изactivityTypeMenu а такжеactivitySubTypeMenu не бросатьValidatorException и компоненты не получают стиль с помощью класса ошибок css Primefaces.Также, если я не установлюitemValue из<f:selectItem itemLabel="Select One" itemValue="" /> в#{null} затем при изменении выбранного значения на значение по умолчанию («Выбрать один») не очищаетсяactivityId p:inputText, Если я использую#{null} тогда я могу получить запуск метода бэкэнда, из которого я могу установить значение текстового поля пустым.

Как я могу решить эти проблемы и получить желаемый результат. Что я хочу это:

Если для параметра установлено значение «Выбрать один», то зависимое меню будет пустым, а меню текстового поля.Я хочу использоватьrequired="true" приписывать.

Ответы на вопрос(1)

Ваш ответ на вопрос