Предварительно установленное проверенное состояние h:selectOneRadio с проходными элементами
Я пытаюсь реализовать решение, описанное в
<div class="form-group">
<h:outputLabel styleClass="control-label"
value="#{msgClient.legalPersonality} " />
Selected value : <h:outputText value="#{msgClient['legalPersonality.' += clientBean.clientDto.legalPersonality.label]}" />
<div>
<f:metadata>
<f:viewParam name="legalPersonality" value="#{clientBean.clientDto.legalPersonality}" />
</f:metadata>
<ui:repeat var="legalPersonality" value="#{clientBean.legalPersonalities}">
<label class="radio-inline">
<input type="radio" jsf:id="legal" pt:name="legalPersonality" value="#{legalPersonality}">
<f:ajax execute="@this" render="@form" />
</input>
<h:outputText value="#{msgClient['legalPersonality.' += legalPersonality.label]}" />
</label>
</ui:repeat>
</div>
</div>
Кажется, все работает нормально, выбранное значение корректно обновляется с помощью компонента f:ajax (установщик вызывается с правильным значением), но переключатели никогда не проверяются. Я имею в виду, что он проверяется, когда я нажимаю на него, но сразу после этого он отключается. Даже при загрузке страницы со значением по умолчанию в clientDto.legalPersonality все не проверяется.
Как это выглядит: http://oi58.tinypic.com/242788g.jpg
Любая помощь будет оценена. Спасибо.
1 ответ
На самом деле, пример в вашем вопросе был слишком упрощен. Это было пропущено checked
атрибут, который необходим для предварительной установки текущего выбора при загрузке страницы и / или после рендеринга ajax, как в вашем случае. В HTML проверенное состояние переключателя достигается установкой checked
приписывать.
Ты можешь использовать <f:passThroughAttribute>
установить checked
атрибут, посредством которого вы убедитесь, что вы установили #{null}
в непроверенном случае, чтобы не checked
атрибут вообще. Это именно минимизированный атрибут; даже если бы мы использовали checked="false"
HTML все равно будет считать это проверенным.
<input type="radio" jsf:id="legal" pt:name="legalPersonality" value="#{legalPersonality}">
<f:passThroughAttribute name="checked" value="#{legalPersonality eq clientBean.clientDto.legalPersonality ? 'checked' : null}" />
<f:ajax execute="@this" render="@form" />
</input>
Пример в вопросе, который вы нашли, тем временем был обновлен. Спасибо!