a4j and SelectOneMenu

费了好大的劲才调试好下面这段页面。用户点击USA或者是CANADA,然后在一个SelectOneMenu里面显示美国州或者加拿大省。

页面:


<h:outputText value="Please select your country" />
<h:form id="forma">
<h:selectOneRadio value="#{Regions.country}">
<f:selectItem itemLabel="USA" itemValue="USA" />
<f:selectItem itemLabel="CANADA" itemValue="CANADA" />
<a:support event="onchange" reRender="regionPanel" />
</h:selectOneRadio>
</h:form>

<a:outputPanel id="regionPanel" ajaxRendered="true">
<s:decorate id="regionDecoration" template="layout/display.xhtml">
<ui:define name="label">#{Regions.selectARegionLable}</ui:define>
<h:selectOneMenu id="selectRegion"
value="#{dealerList.region}" required="true">
<f:selectItems value="#{Regions.regionMap}" />
</h:selectOneMenu>
</s:decorate>
</a:outputPanel>



Bean:



public Map getRegionMap() {

Map l = new HashMap();

if ("USA".equals(country)) {
for (String s : USAStates.states)
l.put(s, s);
setSelectARegionLable("Please select a state:");
} else if ("CANADA".equals(country)) {
for (String s : CanadaProvinces.states)
l.put(s, s);
setSelectARegionLable("Please select a provice:");

} else {
l.put("No region to show", "No region to show");
}
return l;
}

public void setCountry(String country) {
this.country = country;
}

public String getCountry() {
return country;
}



问题出在selectonemenu的属性required=true.估计是因为没有选择一个值导致验证失败,中断了JSF处理周期。去掉以后显示正常。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值