<h:form>
<h:messages />
<h:selectOneRadio value="#{bean.selectedValue}" id="selectId"
layout="pageDirection">
<f:selectItems value="#{bean.values}" var="value"
itemLabel="#{value.text}" itemValue="{value}" />
</h:selectOneRadio>
<h:commandButton value="Press Me" >
<f:ajax listener="#{bean.btn_action}" execute="@form"/>
</h:commandButton>
</h:form>
以下はコードの詳細です。
- Bean は @ViewScope のバッキング Bean です。
- bean.values は、@RequestScope にある別のマネージド Bean のリストです。
- ラジオボタンの値は、バッキング Bean の @RequestScope マネージド Bean の上にバインドされます。#{bean.selectedValue}
- selectedValue は、getter/setter を持つバッキング Bean 内のオブジェクトへの参照です。
問題。- ajax タグに execute=@form を追加すると、リスナーも呼び出されません。- execute-@form の後、リスナーが呼び出されますが、バッキング Bean でラジオ ボタンの選択値が更新されません。 - 私がデバッグするとき、getter は常に selectedValue に対して呼び出され、setter は呼び出されません。
どんな助けでも大歓迎です。ありがとう。