Предварительно установленное проверенное состояние 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> 

Пример в вопросе, который вы нашли, тем временем был обновлен. Спасибо!

Другие вопросы по тегам