f:ajax と t:selectOneRadio を layout="spread" で使用すると問題が発生します
layout="spread" がなければ、これは機能しています:
<t:selectOneRadio id="test" value="#{bean.type}" >
<f:selectItem itemLabel="yes" itemValue="1"/>
<f:selectItem itemLabel="no" itemValue="0"/>
<f:ajax render="label" />
</t:selectOneRadio>
<h:panelGroup id="label" layout="block">
<h:outputText value="OK" rendered="#{bean.type == 1}"/>
<h:outputText value="KO" rendered="#{bean.type == 0}"/>
</h:panelGroup>
ラジオをクリックすると、テキストが変更され、タイプ属性が期待どおりに Bean に設定されます。私の豆は:
@ManagedBean
@ViewScoped
public class Bean {
private String type;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
しかし、layout="spread" では、私の Bean は設定されず、setter は呼び出されませんが、レンダリングは機能します (テストするには、html を検査し、id="label" を使用して div に foo を書き込み、ラジオをクリックした後に、レンダリングのため、テキストは明確です。
私のコード layout="spread" :
<t:selectOneRadio id="test" value="#{bean.type}" layout="spread">
<f:selectItem itemLabel="yes" itemValue="1"/>
<f:selectItem itemLabel="no" itemValue="0"/>
<f:ajax render="label" />
</t:selectOneRadio>
<div><t:radio id="radio1" for="test" index="0"/></div>
<div><t:radio id="radio2" for="test" index="1"/></div>
<h:panelGroup id="label" layout="block">
<h:outputText value="OK" rendered="#{bean.type == 1}"/>
<h:outputText value="KO" rendered="#{bean.type == 0}"/>
</h:panelGroup>
バージョン 1.1.14 の tomahawk2.1 と JSF myfaces 2.2.8 があります。