Привет, у меня есть следующий фрагмент кода.
Идея заключается в том, что я хочу иметь выбор, и в зависимости от этого выбора я хочу отобразить некоторые дополнительные поля в форме.
Поэтому, если пользователь отвечает «Да», он должен заполнить дополнительные поля. Эта часть поддержки a4j: связана с тем, что я хочу сохранить любой ввод пользователя в других полях (ajaxSingle = "false"), и я не хочу обновлять модель и запускать какие-либо валидаторы до тех пор, пока пользователь не заполнит всю форму (немедленно = "true"). Я хочу обновить только одно свойство bean.answer (a4j: actionparam), потому что оно контролирует видимые компоненты формы.
<h:form id="form">
...
<h:selectOneMenu id="question"
value="#{bean.answer}"
required="true">
<f:selectItem itemLabel="No" itemValue="false" />
<f:selectItem itemLabel="Yes" itemValue="true" />
<a4j:support event="onchange"
ajaxSingle="false"
immediate="true"
reRender="form">
<a4j:actionparam name="question"
value="$('form:question').value"
assignTo="#{bean.answer}"
noEscape="true"/>
</a4j:support>
</h:selectOneMenu>
...
<h:outputText value="Additional field"
styleClass="boldedFont"
rendered="#{bean.answer}"/>
<h:inputText id="fieldId"
value="#{bean.additionalFieldValue}"
required="true"
rendered="#{bean.answer}"/>
...
</h:form>
Приведенный выше код работает так, как я хочу. Каждый раз, когда я меняю свой ответ, значение bean-компонента # {bean.answer} обновляется, форма перерисовывается и дополнительные поля появляются / исчезают.
Проблема:
Я хочу изменить поплист (selectOneMenu) на радио-кнопки (selectOneRadio). Поэтому в моем новом коде я просто изменил h: selectOneMenu на h: selectOneRadio:
<h:form id="form">
...
<h:selectOneRadio id="question"
value="#{bean.answer}"
required="true">
<f:selectItem itemLabel="No" itemValue="false" />
<f:selectItem itemLabel="Yes" itemValue="true" />
<a4j:support event="onchange"
ajaxSingle="false"
immediate="true"
reRender="form">
<a4j:actionparam name="question"
value="$('form:question').value"
assignTo="#{bean.answer}"
noEscape="true"/>
</a4j:support>
</h:selectOneRadio>
...
<h:outputText value="Additional field"
styleClass="boldedFont"
rendered="#{bean.answer}"/>
<h:inputText id="fieldId"
value="#{bean.additionalFieldValue}"
required="true"
rendered="#{bean.answer}"/>
...
</h:form>
Но этот код не работает. Каждый раз, когда я меняю свой ответ, значение bean-компонента # {bean.answer} обновляется с тем же значением «false», и дополнительные поля никогда не появляются.
Есть ли простой способ добиться того же поведения с h: selectOneRadio, что и с h: selectOneMenu?
Спасибо