Java code
package net.moon.jsf.bean;import java.util.ArrayList;
import java.util.List;import javax.faces.model.SelectItem;public class DemoBean {
private List<SelectItem> provinces = new ArrayList<SelectItem>();
private List<SelectItem> cities = new ArrayList<SelectItem>(); private String province;
private String city; public List<SelectItem> getPrivinces() {
return provinces;
} public void setPrivinces(List<SelectItem> privinces) {
this.provinces = privinces;
} public List<SelectItem> getCities() {
return cities;
} public void setCities(List<SelectItem> cities) {
this.cities = cities;
} public String getPrivince() {
return province;
} public void setPrivince(String privince) {
this.province = privince;
} public String getCity() {
return city;
} public void setCity(String city) {
this.city = city;
} public DemoBean() {
super();
provinces.add(new SelectItem(""));
provinces.add(new SelectItem("北京"));
provinces.add(new SelectItem("上海"));
// TODO Auto-generated constructor stub
} public String refreshCities() {
cities.clear();
if (("北京").equals(province)) {
cities.add(new SelectItem("东城区", "东城区"));
cities.add(new SelectItem("西城区", "西城区"));
cities.add(new SelectItem("崇文区", "崇文区"));
}
if ("上海".equals(province)) {
cities.add(new SelectItem("黄浦区", "黄浦区"));
cities.add(new SelectItem("卢湾区", "卢湾区"));
cities.add(new SelectItem("徐汇区", "徐汇区"));
}
return null;
}
}JSP页面: HTML code
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@ taglib uri="https://ajax4jsf.dev.java.net/ajax" prefix="a4j"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<f:view>
<h:form>
<h:selectOneMenu id="privince" value="#{demoBean.privince}">
<f:selectItems value="#{demoBean.privinces}"/>
<a4j:support action="#{demoBean.refreshCities}" event="onchange" reRender="city"></a4j:support>
</h:selectOneMenu>
<h:selectOneMenu id="city" value="#{demoBean.city}">
<f:selectItems value="#{demoBean.cities}"/>
</h:selectOneMenu>
</h:form>
</f:view>
</body>
</html>后台报错:
严重: Servlet.service() for servlet Faces Servlet threw exception
java.util.NoSuchElementException
at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:98)
at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:124)
at javax.faces.component.UISelectOne.matchValue(UISelectOne.java:141)
at javax.faces.component.UISelectOne.validateValue(UISelectOne.java:114)
at javax.faces.component.UIInput.validate(UIInput.java:645)
at javax.faces.component.UIInput.executeValidate(UIInput.java:849)
at javax.faces.component.UIInput.processValidators(UIInput.java:412)
at javax.faces.component.UIForm.processValidators(UIForm.java:170)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:912)
at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:342)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.processValidators(AjaxViewRoot.java:403)
at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:78)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:64)
at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:224)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:810)
package net.moon.jsf.bean;import java.util.ArrayList;
import java.util.List;import javax.faces.model.SelectItem;public class DemoBean {
private List<SelectItem> provinces = new ArrayList<SelectItem>();
private List<SelectItem> cities = new ArrayList<SelectItem>(); private String province;
private String city; public List<SelectItem> getPrivinces() {
return provinces;
} public void setPrivinces(List<SelectItem> privinces) {
this.provinces = privinces;
} public List<SelectItem> getCities() {
return cities;
} public void setCities(List<SelectItem> cities) {
this.cities = cities;
} public String getPrivince() {
return province;
} public void setPrivince(String privince) {
this.province = privince;
} public String getCity() {
return city;
} public void setCity(String city) {
this.city = city;
} public DemoBean() {
super();
provinces.add(new SelectItem(""));
provinces.add(new SelectItem("北京"));
provinces.add(new SelectItem("上海"));
// TODO Auto-generated constructor stub
} public String refreshCities() {
cities.clear();
if (("北京").equals(province)) {
cities.add(new SelectItem("东城区", "东城区"));
cities.add(new SelectItem("西城区", "西城区"));
cities.add(new SelectItem("崇文区", "崇文区"));
}
if ("上海".equals(province)) {
cities.add(new SelectItem("黄浦区", "黄浦区"));
cities.add(new SelectItem("卢湾区", "卢湾区"));
cities.add(new SelectItem("徐汇区", "徐汇区"));
}
return null;
}
}JSP页面: HTML code
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@ taglib uri="https://ajax4jsf.dev.java.net/ajax" prefix="a4j"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<f:view>
<h:form>
<h:selectOneMenu id="privince" value="#{demoBean.privince}">
<f:selectItems value="#{demoBean.privinces}"/>
<a4j:support action="#{demoBean.refreshCities}" event="onchange" reRender="city"></a4j:support>
</h:selectOneMenu>
<h:selectOneMenu id="city" value="#{demoBean.city}">
<f:selectItems value="#{demoBean.cities}"/>
</h:selectOneMenu>
</h:form>
</f:view>
</body>
</html>后台报错:
严重: Servlet.service() for servlet Faces Servlet threw exception
java.util.NoSuchElementException
at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:98)
at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:124)
at javax.faces.component.UISelectOne.matchValue(UISelectOne.java:141)
at javax.faces.component.UISelectOne.validateValue(UISelectOne.java:114)
at javax.faces.component.UIInput.validate(UIInput.java:645)
at javax.faces.component.UIInput.executeValidate(UIInput.java:849)
at javax.faces.component.UIInput.processValidators(UIInput.java:412)
at javax.faces.component.UIForm.processValidators(UIForm.java:170)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:912)
at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:342)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.processValidators(AjaxViewRoot.java:403)
at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:78)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:64)
at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:224)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:810)
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货