最近尝试做出一个部门和人员的下拉框联动功能,部门和人员的对应关系是1:n
复制代码 代码如下:
部门
请选择
人员
部门下拉框的onchange()事件走一个ajax方法,返回一个json对象(json里放的是个list)。
js方法在此页面的写法:
复制代码 代码如下:
此处返回的data里包含list(list见后文),list里包含着人员的代码,人员的姓名两个属性。然后先把人员下拉框empty(),通过select控件append方法 添加新的下拉框元素。
后台代码:
复制代码 代码如下:
public string departmentchangeevent() throws exception{
userlist=service.queryforlist(workorder.queryuserbydepartmentcode, departmentcode);
if(userlist!=null&&userlist.size()>0)
{
httpservletresponse response = servletactioncontext.getresponse();
response.setcontenttype(text/html;charset=utf-8);
response.setheader(pragma,no-cache);
response.setheader(cache-control,no-cache);
response.setheader(cache-control, no-store);
printwriter writer = response.getwriter();
jsonobject json = new jsonobject();
map map = new hashmap();
map.put(list,userlist);
jsonobject jso = jsonobject.fromobject(map);
writer.write(jso.tostring());
writer.flush();
writer.close(); }
return null;
}
这个方法是部门切换事件,通过departmentcode(field域,有set,get)来求的当前部门下的用户放到userlist中。
然后通过标准写法把userlist放到一个定义好的hashmap中,key为list。
复制代码 代码如下:
jsonobject jso = jsonobject.fromobject(map);
这是最为关键的一步,有的json对象创建方法也可以为jsonobject jso = new jsonobject() ; 然后把list里的记录放入到jso中。。。
在这里是行不通的,前台会认为返回的是个字符串。。。
struts中 返回类型为json
复制代码 代码如下: