日期:2014-05-19  浏览次数:20722 次

Struts2 结合easyui datagrid的问题
由于刚学习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中却没有显示那一条记录。为什么呢?

------解决方案--------------------
你用FIREFOX的FIREBUG调试下,看下响应是否正确,另外好像JSON的字符串要用双引号。
------解决方案--------------------
如果要拼字符串方式的话。。。我记得格式不是这么拼的,total\row是不用'号的。。你可以上官网看看例子
------解决方案--------------------
LZ,自己debug进去看下,返回是否有值
然后你的datagrid,都不设置表头的??

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