2013-04-04 40 views
0

我想將struts2動作類的數據顯示到JQuery Grid中。但是當我試圖做到這一點,我也不讓網格,它只是顯示了JSON字符串作爲輸出,如下圖所示,嘗試了所有張貼在這裏其他的答案,但沒有運氣.. :(Struts 2 JQuery Grid沒有顯示出來

{ 

"dummyData": [ 
    { 
     "email": "ABC", 
     "name": "DEF" 
    } 
], 
"page": null, 
"records": 1, 
"resDetailObj": { 
    "email": "ABC", 
    "name": "DEF" 
}, 
"rows": 0, 
"searchField": null, 
"searchOper": null, 
"searchString": null, 
"sidx": null, 
"sord": null, 
"total": 2147483647 

} 

我使用的struts2-jQuery的網格插件-3.5.1.jar,Struts2的,jQuery的插件-3.2.1.jar和struts2的-JSON-插件-2.1.8.jar

我的JSP

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org  /TR/html4/loose.dtd"> 
<%@ taglib prefix="s" uri="/struts-tags" %> 
<%@ taglib prefix="sjg" uri="/struts-jquery-grid-tags"%> 
<%@ taglib prefix="sj" uri="/struts-jquery-tags" %> 
<html> 

<h1>In JQueryGrid</h1> 
<head> 
    <sj:head jqueryui="true" jquerytheme="redmond"/> 
</head> 
<body> 
    <s:url var="remoteurl" action="grid"/> 
    <sjg:grid 
     id="mygrid" 
     caption="My Details" 
     dataType="json" 
     href="%{remoteurl}" 
     pager="true" 
     gridModel="dummyData" 

    > 
     <sjg:gridColumn name="name" index="name" title="Name" 
     sortable="true"/> 

     <sjg:gridColumn name="email" index="email" title="Email" 
     sortable="true"/> 

    </sjg:grid> 
</body> 


</html> 

和我的struts.xml文件是

<package name="JQueryGrid" namespace="/" extends="struts-default">    
    <action name="grid class="com.digi.crystal.resourceutilization.actions.GridAction"> 
     <result name="success" type="json"> 
      /JqueryGrid.jsp 
     </result> 
    </action> 
</package> 

,最後我的Action類是

public class GridAction extends ActionSupport 
{ 
private List<CResourceDetails> dummyData; 
private Integer rows=0; 
private Integer page; 
private String sord; 
private String sidx; 
private String searchField; 
private String searchString; 
private String searchOper; 
private Integer total; 
private Integer records; 


private CResourceDetails resDetailObj = new CResourceDetails(); 
public GridAction() 
{ 

} 

public String execute() 
{ 

    List<CResourceDetails> temp = new ArrayList<CResourceDetails>(); 
    resDetailObj.setEmail("ABC"); 
    resDetailObj.setName("DEF"); 
    temp.add(resDetailObj); 

    setDummyData(temp); 
    System.out.println("The temp is:"+"in execute"+dummyData.size()+","+rows);   
    setRecords(temp.size()); 
    total =(int) Math.ceil((double)records/(double)rows); 
    System.out.println("the total is:"+total/1000000000); 
    return Action.SUCCESS; 
} 
// getters and setters of attributes 

這裏CResourceDetails不過是一個普通的POJO,用姓名和電子郵件。

如果任何人都可以用這個網格來幫助我,那對我來說會很有幫助。

非常感謝提前,

CSSiddartha

回答

0

我認爲你是直接訪問的動作電網:

http://localhost:8080/JQueryGrid/grid.action 

嘗試訪問JSP:

http://localhost:8080/JQueryGrid/JqueryGrid.jsp 

網格將會調用該操作並返回結果。

+0

非常感謝答覆,但如果我嘗試,做它就像你說的那樣,我只是得到了H1標籤,甚至沒有顯示空網格。:( – Siddarth 2013-04-04 11:53:21

+0

你必須在你的struts.xml中定義結果類型JSON。在動作定義中,不需要JSP 。在JSP中,我相信正確的url定義是: Joan 2013-04-04 12:42:04

+0

再次感謝您抽出時間幫助我,但即使我做我得到的東西沒有變化.. :( – Siddarth 2013-04-05 03:26:16

0

Siddarth先寫在結果映射只對JSP頁面包含電網支柱的動作,然後WIRTE烏爾電網行動只JSON

<package name="JQueryGrid" namespace="/" extends="struts-default,json-default"> 
<action name="opengridJSP" class="com.digi.crystal.resourceutilization.actions.GridAction" method ="SomeMethod"> 
    <result name="success">/JqueryGrid.jsp</result> 
</action> 

<action name="grid class="com.digi.crystal.resourceutilization.actions.GridAction"> 
    <result name="success" type="json"/> 
</action> 
</package>