[SOS] >> Struts2 使用Gson 输出Json 字符串,无法输出
public String delete() { System.out.println("11:" + getResponse()); if (attribute != null && attribute.getId() != null && !StringUtils.isEmpty(attribute.getId())) { this.productTypeAttributeService.delete(this.attribute.getId()); return super.printJSON(new Message(null, "属性删除成功", Message.SUCCESS_TYPE, null)); } return message(new Message(null, "参数错误", Message.ERROR_TYPE, "/admin/product-type!list.do")); }
protected String printJSON(Object obj) { HttpServletResponse response = getResponse(); response.setContentType("text/json"); response.setCharacterEncoding("UTF-8"); PrintWriter out = null; // System.out.println(obj); // String jsonResult = gson.toJson(obj); // System.out.println(jsonResult); System.out.println("22:" + response); try { out = response.getWriter();out.write("2222222222222222222222"); String jsonString = gson.toJson(obj); System.out.println(jsonString); out.write(jsonString); out.flush(); } catch (IOException e) { e.printStackTrace(); } finally { out.close(); } return null; }
控制台:
11:org.tuckey.web.filters.urlrewrite.UrlRewriteWrappedResponse@539269cb
Hibernate:
select
producttyp0_.uuid as uuid13_1_,
producttyp0_.createTime as createTime13_1_,
producttyp0_.disabled as disabled13_1_,
producttyp0_.orderIndex as orderIndex13_1_,
producttyp0_.inputType as inputType13_1_,
producttyp0_.name as name13_1_,
producttyp0_.notNull as notNull13_1_,
producttyp0_.productType_uuid as product10_13_1_,
producttyp0_.searchFilter as searchFi8_13_1_,
producttyp0_.showNull as showNull13_1_,
options1_.attribute_uuid as attribute6_13_3_,
options1_.uuid as uuid3_,
options1_.uuid as uuid14_0_,
options1_.createTime as createTime14_0_,
options1_.disabled as disabled14_0_,
options1_.orderIndex as orderIndex14_0_,
options1_.attribute_uuid as attribute6_14_0_,
options1_.name as name14_0_
from
product_type_attribute producttyp0_
left outer join
product_type_attribute_option options1_
on producttyp0_.uuid=options1_.attribute_uuid
where
producttyp0_.uuid=?
Hibernate:
delete
from
product_type_attribute
where
uuid=?
22:org.tuckey.web.filters.urlrewrite.UrlRewriteWrappedResponse@539269cb
{"content":"属性删除成功","type":1}
out.write("2222222222222222222222");
但是out.write没有输出到客户端来,firebug检测XHR没有返回任何的东西。后台没有错误。这段代码表明out无法返回内容。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
最后修改为这样就可以正常返回了。
设置成response.setContentType("text/json");在firebug中看不到返回的内容,但是jquery确实是拿到了。而且判断出了json的内容。如果设置成response.setContentType("application/json");,firebug里面可以看到返回的内容。jquery也判断json的内容。
最后发现不是后台设置response.setContentType("text/json");或者是response.setContentType("application/json");的问题。发现使用了$.getJSON,就有问题。直接使用$.get就没有问题。在callback的方法里面都是将返回的东西直接当作json使用的。
使用的Jquery版本是jQuery JavaScript Library v1.5.1 ,有可能是这个版本的问题。和rewriterurl也没有任何的关系。
最后经过简单的测试,换成jQuery JavaScript Library v1.4.4 ,getJSON也可以使用了,就没有这个问题了。 jquery fuck you `!~
怀疑是Urlrewriter的问题。注释掉配置;
两次输出response变成了下面的,但是还是没有任何的输出。
11:org.apache.catalina.connector.ResponseFacade@5ae9581b
22:org.apache.catalina.connector.ResponseFacade@5ae9581b