JSF: динамически менять форму - PullRequest
0 голосов
/ 13 апреля 2011

Я хочу создать форму, которая динамически изменяет видимые компоненты в зависимости от состояния других компонентов.

Например ... Есть несколько текстовых полей и несколько флажков, и если пользователь активирует определенный флажок, должна появиться группа других элементов ввода.

Могу ли я сделать это с помощью JSF 2.0 + Tomahawk или мне нужна другая библиотека для этого? И как я могу это сделать? Это не будет работать без AJAX, не так ли?

Заранее спасибо!

1 Ответ

6 голосов
/ 13 апреля 2011

Ajax - удобный способ сделать это, и JSF 2.0 поставляется в комплекте с ajax.

Вот пример:

<h:selectOneRadio value="#{a7.myCheckbox.state}">
      <f:selectItem itemLabel="#{bundle.yes}" itemValue="1"/>
      <f:selectItem itemLabel="#{bundle.no}" itemValue="0"/>
      <f:ajax render="uawGroup"/>
</h:selectOneRadio>

<h:panelGroup id="uawGroup" layout="block">
   <h:outputText value="#{bundle.wichmed}"
        rendered="#{a7.myCheckbox.state == 1}"/>
   <h:inputText value="#{}" id="myInput"
        rendered="#{a7.myCheckbox.state == 1}"/> 
</h:panelGroup>

h:panelGroup будет отображаться при выборе опции "yes" в h:selectOneRadio (itemValue == 1).Первоначально это 0 (установлено в bean-компоненте "a7").

h:panelGroup действует как оболочка, поскольку вы можете обновлять только компоненты с ajax, которые фактически отображаются на странице (h:outputText и h:inputTextизначально не отображаются).

...