1

<h:selectOneRadio> render table 要素で説明されているソリューションを実装しようとしています が、これを回避するにはどうすればよいですか?

<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

どんな助けでも大歓迎です。ありがとうございました。

4

1 に答える 1

1

確かに、あなたが見つけた質問の例は少し単純化されすぎていました. checkedあなたの場合のように、ページの読み込み時および/またはajaxレンダリング後に現在の選択を事前設定するために必要な属性がありませんでした。HTML では、ラジオ ボタンのチェック状態は、checked属性を設定することによって実現されます。

を使用して属性<f:passThroughAttribute>を設定できます。これにより、属性をまったくレンダリングしないように、チェックされていないケースで設定するようにしてください。つまり、最小化された属性です。を使用したとしても、HTML はチェックされていると見なします。checked#{null}checkedchecked="false"

<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> 

あなたが見つけた質問の例は、その間に更新されました。ありがとう!

于 2015-09-27T17:10:20.657 に答える