当前位置:编程学习 > JAVA >>

easyui-datagrid url 调用action 数据在table中不显示

action :

public String list() {
try {
List<UserBean> ulist = userService.getAllUser();
Map<String, Object> map=new HashMap<String, Object>();
map.put("total",new Integer(ulist.size()));
map.put("rows",ulist);
JSONArray json = JSONArray.fromObject(map);
dataString  = json.toString();
dataString = dataString.substring(1, dataString.length()-1);
log.info("dataString: "+dataString);
return SUCCESS;
} catch (Exception e) {
log.error("----------error----------", e);
return "error";
}
}


struts.xml :
		<action name="listUser" class="com.myssh.demo.action.UserAction" method="list">
<result name="success" type="json" >
<param name="root">dataString</param>
</result>
<result name="error">/WEB-INF/jsp/error.jsp</result>
</action>


jsp :

    <table id="mydatagrid" class="easyui-datagrid" title="DataGrid Complex Toolbar" style="width:700px;height:250px"
            data-options="rownumbers:true,singleSelect:true,url:'<c:url value="userinfo/listUser"/>',
            method:'get',toolbar:'#tb',loadFilter: function(data){ alert(data); }">
        <thead>
            <tr>
                <th data-options="field:'id',width:80">id</th>
                <th data-options="field:'name',width:100">name</th>
                <th data-options="field:'password',width:80,align:'right'">password</th>
            </tr>
        </thead>
    </table>



刚开始用这个easyui, jsp是在官网的demo拷出来的,原来url:‘datagrid_data1.json’
能显示 ,后改成action地址就不显示了 
确认action已经被调用(log打印了)
确认返回的json格式正确,jsp上有alert(data)的 和demo里的一样
网上搜索了一圈没有结果
请指教 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 自己顶一下 --------------------编程问答-------------------- return返回值不应该是map吗 --------------------编程问答-------------------- --------------------编程问答-------------------- datagrid是ajax请求 --------------------编程问答-------------------- 1.首先你确认已经跑到后台了,如果已经调用actin
2.如果已经调用到action,我目测问题是这样的,你调下试试
把JSONArray json = JSONArray.fromObject(map);
换成 private JSONObject json;
     set get方法

     json = JSONObject.fromObject(map);
--------------------编程问答-------------------- 你转成  json后

dataString = dataString.substring(1, dataString.length()-1); 这个干嘛去掉{}    ? --------------------编程问答--------------------
引用 7 楼 ntwangshuaiok 的回复:
1.首先你确认已经跑到后台了,如果已经调用actin
2.如果已经调用到action,我目测问题是这样的,你调下试试
把JSONArray json = JSONArray.fromObject(map);
换成 private JSONObject json;
     set get方法

     json = JSONObject.fromObject(map);


改了不行 在jsp页面的打印[object,object] 还是不显示 --------------------编程问答--------------------
引用 8 楼 rui888 的回复:
你转成  json后

dataString = dataString.substring(1, dataString.length()-1); 这个干嘛去掉{}    ?


因为这样就和他官方的demo一致了 {"total":28,"rows":[{},{},{}]} 不然就会多一个"[]" 
这个地方不写 也是不能显示的 --------------------编程问答-------------------- alert(data.total) --------------------编程问答--------------------
引用 11 楼 rui888 的回复:
alert(data.total)

这个是意思的
我把alert(data);改成alert(data.total) 打印的是 undefined --------------------编程问答-------------------- 你浏览器调试看看 。data 里面是怎么放数据的  F12 --------------------编程问答-------------------- 现在data就是string 内容就是  {"total":19,"rows":[{"id":"a","name":"s"},{...},{...}]} --------------------编程问答-------------------- 你这样在前台的easyui得到的不是一个json对象,而是一个字符串,你加上struts-json包,就直接传list对像就行了,不用那么麻烦了 --------------------编程问答--------------------
引用 14 楼 caoyanan_com 的回复:
现在data就是string 内容就是  {"total":19,"rows":[{"id":"a","name":"s"},{...},{...}]}
string不行的,easyui接的是json对象而不是一个json转后的字符串。。。加上struts2-json-plugin.jar这个插件,然后后台你就不用管了,直接似list对象,在前台会自动转化为json对象,正确显示在datagrid上面了、、、、 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答--------------------
引用 16 楼 hjw506848887 的回复:
Quote: 引用 14 楼 caoyanan_com 的回复:

现在data就是string 内容就是  {"total":19,"rows":[{"id":"a","name":"s"},{...},{...}]}
string不行的,easyui接的是json对象而不是一个json转后的字符串。。。加上struts2-json-plugin.jar这个插件,然后后台你就不用管了,直接似list对象,在前台会自动转化为json对象,正确显示在datagrid上面了、、、、


直接 把这个 ulist(加了get/set方法) 传到前台 也没有显示 --------------------编程问答-------------------- 配置文件
<property name="mediaTypes">
            <map>
                <entry key="json" value="application/json" />
                <entry key="xml" value="application/xml" />
            </map>
        </property>

F12看前台URL是否有值;ajax请求的代码贴下 --------------------编程问答--------------------
引用 20 楼 huasuan26 的回复:
配置文件
<property name="mediaTypes">
            <map>
                <entry key="json" value="application/json" />
                <entry key="xml" value="application/xml" />
            </map>
        </property>

F12看前台URL是否有值;ajax请求的代码贴下


 我自己写的alert的地方会打印出值 ,没有ajax请求的代码  --------------------编程问答--------------------
$("#buttonGrid").datagrid({
url:appPath+'/page/button/buttonlist',
height : 550,
striped: true,
remoteSort:false,
queryParams: getQueryParam(),
idField:'buttonCode',
checkbox:true,
frozenColumns:[[
      {field:'ck',checkbox:true},
      {field:'opt',title:'操作',width:32,align:'center',
       formatter:function(value,rowData,rowIndex){
        var dataStr = JSON.stringify(rowData);
       return "<img class='op-enable' src='"+appPath+"/js/lib/jquery-easyui/themes/icons/pencil.png' title='编辑' onClick='showEdit("+dataStr+")'/>";
       }
      }
                ]],
columns:[[
  {field:'buttonCode',title:'按钮编码',width:100,align:'left',sortable:true},
      {field:'buttonName',title:'按钮名称',width:100,align:'left',sortable:true},
      {field:'buttonType',title:'按钮类型',width:100,align:'left',sortable:true},
      {field:'username',title:'添加人',width:100,align:'left',sortable:true},
      {field:'addTimeString',title:'添加时间',width:200,align:'left',sortable:true},
      {field:'editTimeString',title:'修改时间',width:200,align:'left',sortable:true},
      {field:'isDelete',title:'是否删除',width:400,align:'left',sortable:true}
      ]],


这样写试过没有 --------------------编程问答--------------------
引用 22 楼 huasuan26 的回复:
$("#buttonGrid").datagrid({
url:appPath+'/page/button/buttonlist',
height : 550,
striped: true,
remoteSort:false,
queryParams: getQueryParam(),
idField:'buttonCode',
checkbox:true,
frozenColumns:[[
      {field:'ck',checkbox:true},
      {field:'opt',title:'操作',width:32,align:'center',
       formatter:function(value,rowData,rowIndex){
        var dataStr = JSON.stringify(rowData);
       return "<img class='op-enable' src='"+appPath+"/js/lib/jquery-easyui/themes/icons/pencil.png' title='编辑' onClick='showEdit("+dataStr+")'/>";
       }
      }
                ]],
columns:[[
  {field:'buttonCode',title:'按钮编码',width:100,align:'left',sortable:true},
      {field:'buttonName',title:'按钮名称',width:100,align:'left',sortable:true},
      {field:'buttonType',title:'按钮类型',width:100,align:'left',sortable:true},
      {field:'username',title:'添加人',width:100,align:'left',sortable:true},
      {field:'addTimeString',title:'添加时间',width:200,align:'left',sortable:true},
      {field:'editTimeString',title:'修改时间',width:200,align:'left',sortable:true},
      {field:'isDelete',title:'是否删除',width:400,align:'left',sortable:true}
      ]],


这样写试过没有


这样肯定是可以的,但是我需要不要操作过多js的方式  --------------------编程问答-------------------- Ajax不是需要response响应吗 --------------------编程问答-------------------- --------------------编程问答-------------------- 看来没人这么做过 
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,