功能描述:例如在第一个省份下拉列表中选择安徽,在第二个地级市下拉列表中就能出现安徽下面所有的市区(合肥,安庆。。) 这样的功能在struts中怎么实现啊?

解决方案 »

  1.   

    首先,在struts2里面获得省份集合,假设为provinceList,里面保存的是provinceCode和provinceName然后到转到jsp页面页面定义两个select标签:1.<select id="provinceCode" name="provinceCode" onChange="showCityList()">
    <s:iterator value="provinceList" status="st">
      <option value="<s:property value='provinceList[#st.index][0]'/>"><s:property value='provinceList[#st.index][1]' /></option>
    </s:iterator>
    </select>2. <select id="cityCode" name="cityCode"></select>js代码如下:
    function showCityList(){
      var provinceCode= $("#provinceCode").val();
        $.ajax({
            url:"showCityListAction.action",//这里是获取城市信息的action
            type:"post",
            dataType:"json",
            data:"provinceCode="+provinceCode,//这里传入省份code到action中
         success:function(data) {
       /**这里需要action返回城市的json数组,格式为"[{'cityCode':'001','cityName':'合肥'}, {'cityCode':'002','cityName':'安庆'},{'cityCode':'003','cityName':'池州'}]"
       具体在action怎么返回不用我说了吧,可以通过struts2对应的json插件来实现
       也可以直接输出
    response.setContentType("text/json; charset=UTF-8");
    PrintWriter out = response.getWriter();
    out.write("你得到的json字符串,上面格式已经说了"); 
     */
            $.each(data, function(i, n){
             $("<option value='"+ n.cityCode +"'>"+ n.cityName +"</option>").appendTo($('#cityCode'));             }
         
               });
    }