hibernate中关于servlet+Ajax+jquery+json+gson实现级联效果

1 篇文章 0 订阅
1 篇文章 0 订阅

研究了一天的在hibernate中关于servlet+Ajax+jquery+json+gson实现从数据库中读取数据实现区县、街道级联效果。

 

servlet的处理页面

package com.accp.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONArray;
import net.sf.json.JsonConfig;
import net.sf.json.util.PropertyFilter;

import com.accp.dao.impl.StreetDaoImpl;
import com.accp.po.Street;
import com.google.gson.Gson;

public class GetjdServlet extends HttpServlet {

@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
//获得Ajax传过来的区县编号。
int qxid = Integer.parseInt(request.getParameter("qxid"));
StreetDaoImpl sdi = new StreetDaoImpl();
//根据区县编号查询所有街道
List<Street> streets = sdi.getStreetByAreaid(qxid);
request.setAttribute("streets", streets);
response.setContentType("text/xml;charset=utf-8");
PrintWriter out=response.getWriter();
//使用json
JsonConfig jc=new JsonConfig();
//用于将json保持的数据转换成字符串
Gson gson=new Gson();
//过滤掉不想要的属性,避免json死循环
jc.setJsonPropertyFilter(new PropertyFilter() {

public boolean apply(Object arg0, String arg1, Object arg2) {
// TODO Auto-generated method stub
if (arg1.equals("area")||arg1.equals("manages")) {
return true;
}else{
return false;
}
}
});
//如果有关联属性,需取消延迟加载将映射文件内的lazy设置成false
JSONArray jsonArray = JSONArray.fromObject(streets,jc); 
//将json保存的数据转换成字符串
String js=gson.toJson(jsonArray);
out.print(js);
out.flush();
out.close();
}
}

 

jsp页面,当执行selectjd方法时进行Ajax验证

function selectjd(){
//获取name为mf的标签下的name为qxid的标签的值
var row = document.mf.qxid.value;//alert(row);
$.ajax({
type:"post",
url:"../getjd",
data:"qxid="+row,
dataType:"json",
success:function(data){
$("#jdid").empty();
$("#jdid").append("<option value='0'>不限--</option>");
$.each(data,function(streetIndex,street){ 
$("#jdid").append("<option value="+street["id"]+">"+street["name"]+"</option>");

}); 
}
});
}


效果已经实现,可是牺牲了几个关联关系的延迟加载。
还有就是为什么我使用下面的$.getJSON方式就没办法转到servlet处理页面

 

$.getJSON(
"../getjd?qxid="+row,
function(data){
$("#jdid").empty();
$("#jdid").append("<option value='0'>不限--</option>");
$.each(data,function(streetIndex,street){ 
$("#jdid").append("<option value="+street["id"]+">"+street["name"]+"</option>");

}); 
}
);
}); 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值