由于刚学习struts2不久,所以还请java达人们看看这个问题。先贴代码吧。
JSP页面片段:
<script>
$(function(){
$('#test').datagrid({
title:'My DataGrid',
iconCls:'icon-save',
width:700,
height:600,
nowrap: true,
autoRowHeight: false,
striped: true,
collapsible:true,
url:'/json/showall'
                         .................
                          ................
</script>struts.xml配置文件片段:
<package name="jsoncl" namespace="/json" extends="json-default">
     <action name="showall" class="com.aaa.actions.ShowAllAction">
          <result name="success" type="json">/WEB-INF/result.jsp</result>
     </action>
    </package>
action:
public class ShowAllAction extends ActionSupport implements ServletResponseAware{ private static final long serialVersionUID = 1L;
private HttpServletResponse response;

public String execute() throws Exception{

String str = "{'total':1,'rows':[{'code':'001','name':'Name 1','addr':'Address 11','col4':'col4 data'}]}";

PrintWriter pw = response.getWriter();

pw.print(str);

return SUCCESS;
} public void setServletResponse(HttpServletResponse response) {
// TODO Auto-generated method stub
this.response = response;
}}问题来了,action确实是运行的,没抱错。但是在easyui的datagrid中却没有显示那一条记录。为什么呢?

解决方案 »

  1.   

    你用FIREFOX的FIREBUG调试下,看下响应是否正确,另外好像JSON的字符串要用双引号。
      

  2.   

    如果要拼字符串方式的话我记得格式不是这么拼的,total\row是不用'号的。。你可以上官网看看例子
      

  3.   

    LZ,自己debug进去看下,返回是否有值
    然后你的datagrid,都不设置表头的??
      

  4.   

    楼主的格式没有问题。唯一的问题就是你发给客户端的不是json而是字符串。你要在获得输出流之前设置响应头。response.setContentType("application/json");声明json而不是字符串。这样datagrid才能解析
      

  5.   

    感谢大家的帮助,问题解决了。
    首先,json的字符串拼接确实可能是要用双引号,但是在ie8的环境下单引号也不报错。
    4楼的兄弟,我的表头是写在<script>里面的。
    5楼的兄弟说的对,return 应该是null而不是SUCCESS
    分给大家。