我无法设置h:selectOneRadio的默认值,因为我需要预先选择单选按钮
<h:selectOneRadio id="myRadio" value="#{Externalbean.addressFlag}" >
<f:selectItem itemValue="1" itemLabel="Yes"/>
<f:selectItem itemValue="0" itemLabel="No"/>
</h:selectOneRadio>
我的支持bean是
private String addressFlag="0";
public String getAddressFlag() {
return addressFlag;
}
public void setAddressFlag(String addressFlag) {
this.addressFlag = addressFlag;
}
但没有运气
答案 0 :(得分:12)
您需要在辅助bean的init方法中设置默认值:
@ManagedBean
public class YourBackingBean implements Serializable {
private String addressFlag;
@PostConstruct
public void init() {
addressFlag = "0";
}
public String getAddressFlag() {
return addressFlag;
}
public void setAddressFlag(String addressFlag) {
this.addressFlag = addressFlag;
}
}
答案 1 :(得分:7)
我做了一点测试,它按预期工作正常,但我也观察到当你省略<h:form>
标签时,单选按钮的行为是不可预测的并且依赖于webbrowser。 JSF生成的HTML输出看起来是正确的,但是web浏览器在视图中只会选择用户在同一页面上的先前请求中选择实际的按钮。如果缓存为空,则不会选择任何按钮。至少,FF就是这种情况。
所以,看起来你忘记在它周围放一个<h:form>
。
答案 2 :(得分:2)
仅使用<h:selectOneRadio required="true">
:
<h:selectOneRadio required="true" id="myRadio" value="#{Externalbean.addressFlag}" >
<f:selectItem itemValue="1" itemLabel="Yes"/>
<f:selectItem itemValue="0" itemLabel="No"/>
</h:selectOneRadio>
答案 3 :(得分:-1)
您是否尝试将addressFlag
设置为整数?
private Integer addressFlag = 0;
public Integer getAddressFlag() {
return addressFlag;
}
public void setAddressFlag(Integer addressFlag) {
this.addressFlag = addressFlag;
}