Spring MVC + EasyUI实现地区级联

本文介绍如何使用JSP结合EasyUI插件实现地址级联选择功能,包括省份、城市、区县等多级联动,并展示了具体的HTML代码及后端Action处理逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、JSP

<input id="sj" class="easyui-combobox" id="nextAgency" data-options="width:103,prompt:'请选择省份',editable:false,url:'${ctx}/xxx/xxxAction/listDistrict',
valueField:'aaa020',idField:'aaa020',parentField:'parent',textField:'aaa021',toggleOnClick:'true', onSelect:function(district){
$('#cs').combobox('clear');$('#cs').combobox('reload','${ctx}/xxx/xxxAction/listDistrict?parent='+district.aaa020)},onLoadSuccess:function()
{ $('#sj').combobox('setValue',${sjCode!=null? sjCode : "''"}); $('#cs').combobox('setValue',${csCode!=null? csCode : "''"}); }"/>                              

<input id="cs" class="easyui-combobox" data-options="width:100,prompt:'请选择城市' ,
                                                        valueField:'aaa020',editable:false,idField:'aaa020',parentField:'parent',
                                                        textField:'aaa021',onSelect:function(district){$('#qx').combobox('clear');
                                                        $('#qx').combobox('reload','${ctx}/xxx/xxxAction/listDistrict?parent='+district.aaa020)},
                                                        onLoadSuccess:function(){ $('#qx').combobox('setValue',${qxCode!=null? qxCode : "''"});}"/>

<input id="qx" class="easyui-combobox" data-options="width:100,prompt:'请选择区县' ,
                                                        valueField:'aaa020',editable:false,idField:'aaa020',parentField:'parent',textField:'aaa021',
                                                        onSelect:function(district){$('#jd').combobox('clear');
                                                        $('#jd').combobox('reload','${ctx}/xxx/xxxAction/listDistrict?parent='+district.aaa020)},
                                                        onLoadSuccess:function(){ $('#jd').combobox('setValue',${jdCode!=null? jdCode :  "''"});}"/>

<input id="jd" class="easyui-combobox"  data-options="width:121,prompt:'请选择乡镇(街道)' ,
                                                          valueField:'aaa020',editable:false,idField:'aaa020',parentField:'parent',textField:'aaa021',
                                                          onSelect:function(district){$('#sq').combobox('clear');
                                                          $('#sq').combobox('reload','${ctx}/xxx/xxxAction/listDistrict?parent='+district.aaa020)},
                                                          onLoadSuccess:function(){ $('#sq').combobox('setValue',${sqCode!=null?sqCode :  "''"});}"/>

<input id="sq" class="easyui-combobox" data-options="width:100,prompt:'请选择社区' ,
                                                        valueField:'aaa020',editable:false,idField:'aaa020',parentField:'parent',textField:'aaa021'"/>

2、Action

 /**
     * 获得行政区划
     * @param parent 父节点编码
     * @return
     */
    @RequestMapping(value = "/listDistrict")
    @ResponseBody
    public void listDistrict(String parent,HttpServletRequest request,HttpServletResponse response){
        try {
            request.setCharacterEncoding("UTF-8");
            response.setCharacterEncoding("UTF-8");
            response.setContentType("text/html");
            List<District> list = districtService.listDistrict(parent);
            String json = JSONArray.toJSONString(list);
            response.getWriter().write(json);
        } catch (Exception e) {
            e.printStackTrace();
            //TODO 作异常处理
        }
    }

为了便于理解,关键的点解释一下吧:
1、表结构,需要有存放父级节点ID的字段,如上面的parent
2、第一次加载省级的地区列表,如第一个Input中的:url:'${ctx}/xxx/xxxAction/listDistrict';
        3、当选择了省份,就触发onSelect中的函数,先清空市级中的数据,再重新加载当前选择的省份下的市级地区列表;
4、onLoadSuccess中的函数是为了对表单修改时地区的回显。
其实会了2级级联,不管多少级都很简单了,依葫芦画瓢,去试试吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值