Требуемый атрибут входного текста должен зависеть от отправленного значения другого компонента

StackOverflow https://stackoverflow.com/questions/9310453

Вопрос

У меня есть форма, которая содержит раскрывающуюся спину и два поля ввода.

<h:selectOneMenu />
<h:inputText />
<h:inputText />

Я хотел бы сделать необходимый атрибут входных полей условными в зависимости от выбранного значения раскрывающегося списка. Если пользователь выбирает первый элемент раскрывающегося списка, то необходимо потребоваться поля ввода. Если пользователь выберет второй элемент, то это не потребуется.

Как я могу этого добиться?

Это было полезно?

Решение

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

<h:selectOneMenu binding="#{menu}" value="#{bean.item}">
    <f:selectItem itemValue="first" itemLabel="First item" />
    <f:selectItem itemValue="second" itemLabel="Second item" />
</h:selectOneMenu>

<h:inputText value="#{bean.input1}" required="#{menu.value eq 'first'}" />
<h:inputText value="#{bean.input2}" required="#{menu.value eq 'first'}" />

Обратите внимание, что binding Пример как есть. Абсолютно не установите его на собственность бобов здесь. Смотрите также Как работает атрибут «привязки» в JSF? Когда и как это следует использовать?

Также обратите внимание, что упорядочение компонентов является значительным. Если меню расположено под входами в дереве, используйте #{menu.submittedValue eq 'first'} вместо. Или если вы хотите быть независимым от этого, используйте #{param[menu.clientId] eq 'first'} вместо.

Другие советы

Предполагая, что вы используете JSF 2.0: пусть ваш SelectOnelistbox выполняется с AJAX и повторно рендеринг поля ввода при изменении блока списка:

Быстрый набросок:

<h:selectOneMenu value="#{myBean.myMenuValue}">
  <f:ajax render="input1"/>
   ..
</h:selectOneMenu>

<h:inputText id="input1" value="#{myBean.myInputValue}" 
             required="#{myBean.myMenuValue == 'firstEntry'}" />
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top