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)