我在 layout="spread" 中使用 f:ajax 和 t:selectOneRadio 时遇到问题
没有 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