jquery的ajax实现二级联动

第一步:引入struts整合json的插件包

第二步:在struts.xml中定义:

修改:

<package name="system" namespace="/system" extends="struts-default">

修改成

<package name="system" namespace="/system" extends="json-default">

 

在Action中添加:

<!-- 默认将栈顶的对象,转换成json对象,如果栈顶是一个集合,转换成json数组 -->

<result name="findJctUnit" type="json"></result>

 

第三步:页面使用jquery的ajax调用二级联动的js

//ajax的二级联动,使用选择的所属单位,查询该所属单位下对应的单位名称列表

    function findJctUnit(o){

    //货物所属单位的文本内容

    var jct = $(o).find("option:selected").text();

    $.post("elecUserAction_findJctUnit.do",{"jctID":jct},function(data,textStatus){

                   //先删除单位名称的下拉菜单,但是请选择要留下

                   $("#jctUnitID option").remove();

                 if(data!=null && data.length>0){

                     for(var i=0;i<data.length;i++){

                                     var ddlCode = data[i].ddlCode;

                                     var ddlName = data[i].ddlName;

                                     //添加到单位名称的下拉菜单中

                                     var $option = $("<option></option>");

                                     $option.attr("value",ddlCode);

                                     $option.text(ddlName);

                                     $("#jctUnitID").append($option);

                       }

                 }

        });

   

    }

 

第四步:在Action中定义,这里要将返回的List集合放置到栈顶,struts2将其转换成json数据:例如:

public String findJctUnit(){

        //1:传递所属单位对应的名称,以名称作为条件,查询数据字典,返回List<ElecSystemDDL>

        String jctID = elecUser.getJctID();

        List<ElecSystemDDL> list = elecSystemDDLService.findSystemDDLListByKeyword(jctID);

        //2:将List转化成json数据,并返回到页面上

        //将list压入到struts2值栈的栈顶,struts2的插件包,将结果转换成json数据

        ValueStackUtils.setValueStack(list);

        return "findJctUnit";

    }

上面的操作,将栈顶中封装的List集合,其中List集合中的对象所有的属性全部被json化。

总结:将List中存放的对象中的所有属性全部被json化,如果想针对某个属性被json化

此时可以修改struts.xml文件:

添加:

<!-- 默认将栈顶的对象,转换成json对象,如果栈顶是一个集合,转换成json数组 -->

         <result name="findJctUnit" type="json">

                   <param name="includeProperties">\[\d+\]\.ddlCode,\[\d+\]\.ddlName</param>

         </result>

posted @ 2016-07-18 19:43  kimi9py  阅读(711)  评论(0编辑  收藏  举报