当前位置:首页 > 开发 > Web前端 > Jquery > 正文

jquery转换java对象

发表于: 2012-08-01   作者:cqyqing   来源:转载   浏览:
摘要: 在页面增加触发函数,如下,参数test即为对象的别名,查询出对象后,使用该别名 $(".img_xmdj").click(function(){ $.post("jsdwController.html",{test:'test'},function(data){ eval(unescape(data)); alert("id:&quo
在页面增加触发函数,如下,参数test即为对象的别名,查询出对象后,使用该别名
$(".img_xmdj").click(function(){
$.post("jsdwController.html",{test:'test'},function(data){
eval(unescape(data));
alert("id:"+test.id)
alert("name:"+test.name)
alert("code:"+test.code);
alert("date:"+test.dt);
});
});

在Controller中增加测试对象
String test = request.getParameter("test");
if(StringUtils.isNotEmpty(test)){
YdTest t = new YdTest();
t.setCode("ABCDEFG");
t.setId(1234567);
t.setName("約翰.史密斯");
t.setDt(new Date());
ResponseUtil.write(test, response, t);
return null;
}
在工具类中处理返回的对象字符串
public static void write(String tagName,HttpServletResponse res,Object obj){
StringBuffer sb = new StringBuffer();
try {
sb.append("var "+tagName+" = {\n");
Field[] fields = obj.getClass().getDeclaredFields();
if(fields != null&&fields.length > 0){
for(Field f : fields){
if("serialVersionUID".equals(f.getName()))continue;
f.setAccessible(true);
Object value = f.get(obj);
if(value == null){
sb.append(f.getName()).append(":").append("'',");
continue;
}
String type = f.getType().getName();
if("java.lang.String".equals(type)){
sb.append(f.getName()).append(":").append("'").append(value).append("',");
}else if("java.util.Date".equals(type)){
if(!value.equals("")){
value = DateFormat.getDateTimeInstance().format((Date)value);
sb.append(f.getName()).append(":").append("'").append(value).append("',");
}
}else{
sb.append(f.getName()).append(":").append(value).append(",");
}
}
}
if(sb.lastIndexOf(",")>0){
sb.deleteCharAt(sb.lastIndexOf(","));
}
sb.append("\n};");
System.out.println(sb.toString());
PrintWriter write = res.getWriter();
write.print(escape(sb.toString()));
write.flush();
write.close();
} catch (Exception e) {
e.printStackTrace();
}
}

需要注意的地方是红色标注出来的地方,因为jquery传递中文时,会出现乱码,所以在后台输出的时候编码,在前台获取的时候在转码,确保中文输出没问题


补充于2012-08-29
发现使用JSONObject和JSONArray对象转换更方便,无需在javascript端再使用unescape函数转换,代码如下
java代码
String xml = "";
if(obj instanceof List){
JSONArray array = JSONArray.fromObject(obj);
xml = array.toString();
}else{
xml = JSONObject.fromObject(obj).toString();
}
PrintWriter write = res.getWriter();
res.setCharacterEncoding("UTF-8");
System.out.println(xml);
write.print(xml);
write.flush();
write.close();

js代码
var data = JSON.parse(json);
for(var i=0;i<data.length;i++){
if(parseInt(data[i].typeParentId) <= 1){
    html += ("<option value='"+parseInt(data[i].id)+"'>"+data[i].typeName+"</option>");
    }
}

jquery转换java对象

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号