`
dontsan
  • 浏览: 40035 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
文章分类
社区版块
存档分类
最新评论

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处理周期。去掉以后显示正常。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics