2015-09-27 2 views
1

Я пытаюсь реализовать решение, описанное в <h:selectOneRadio> renders table element, how to avoid this?Предустановленные проверяются состояние часов: 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 компоненты (setter вызывается с правильным значением). НО радиокнопки никогда не проверяются. Я имею в виду, что он проверяется, когда я нажимаю на него, но он не контролируется сразу после. Даже при загрузке страницы со значением по умолчанию в 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> 

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

+0

Работает как очарование! Спасибо за помощь. –

+0

Добро пожаловать :) – BalusC

Смежные вопросы