表结构是ID CODE PID
1、写实现类方法,查询前台所传父ID对于的菜单
@Override
public List<Gwdict> getTWOUnit(String id) {
String sql="select g.CODE,g.id from GWDICT g where PARENTID='"+id+"'";
return this.createSQLQuery(sql).list();
}
2、写action,我用的springMVC list的验证就省去了。。。
@RequestMapping(value="/twoUnit.action")
@ResponseBody
public List<Gwdict> getTwoUnit(HttpServletRequest request,HttpServletResponse response) throws Exception{
response.setCharacterEncoding("UTF-8");
String id=request.getParameter("id");
List<Gwdict> list=gwPostMagService.getTWOUnit(id);
JSONArray json=JSONArray.fromObject(list);
response.getWriter().write(json.toString());
response.getWriter().flush();
return null;
}
3、利用freemaker取出所有一级列表
3、其他子列表就只有一个select就行
(1) 二级子列表
<select id="twoUnit" onchange="selectCheckedOne();" >
</select>
(2)三级子列表
<select id="threeUnit"> </select>
4、前台js 感觉应该能再优化的
function selectChecked(){
var oneId=$("#oneUnit").attr("value");
$.ajax({
type: "POST",
url: "postorg/twoUnit.action",
data: "id="+oneId+"",
dateType:"json",
success: function(value){
var msg=eval("("+value+")");
$("#twoUnit").empty();
for(var i=0;i<msg.length;++i){
var option=new Option(msg[i]);
option.text = msg[i][0];
option.value=msg[i][1];
$("#twoUnit").append(option);
}
selectCheckedTwo();
}
});
}
function selectCheckedTwo(){
var twoId=$("#twoUnit").attr("value");
$.ajax({
type: "POST",
url: "postorg/twoUnit.action",
data: "id="+twoId+"",
dateType:"json",
success: function(value){
var msg=eval("("+value+")");
$("#threeUnit").empty();
for(var i=0;i<msg.length;++i){
var option=new Option(msg[i]);
option.text = msg[i][0];
option.value=msg[i][1];
$("#threeUnit").append(option);
}
}
});
}
效果
第一次,多谢支持