【发布时间】:2012-06-10 01:15:47
【问题描述】:
我正在尝试使用 struts2-jquery 网格插件。 调试时,我的 gridmodel 得到了正确更新,但网格上没有显示任何内容。 这是我的动作课:
private List<Customer> gridModel;
private Integer rows ;
private Integer page ;
private String sord;
private String sidx;
private String searchField;
private String searchString;
private String searchOper;
private Integer total ;
private Integer records ;
public String execute() throws Exception{
try {
List<Customer> list = new ArrayList<Customer>;
for (int i=0; i<3; i++) {
Customer cust = new Customer("myName", 20, "myAdress", "23651336");
list.add(cust);
}
setGridModel(list);
setRecords(list.size());
total =(int) Math.ceil((double)records / (double)rows);
} catch( Exception e) {
log.error("Error in JSON data : " +e.getMessage());
}
return SUCCESS;
}
public List<Customer> getGridModel() {
return gridModel;
}
public Integer getPage() {
return page;
}
public void setPage(Integer page) {
this.page = page;
}
public String getSearchField() {
return searchField;
}
public void setSearchField(String searchField) {
this.searchField = searchField;
}
public void setGridModel(List<Customer> gridModel) {
this.gridModel = gridModel;
}
public String getSord() {
return sord;
}
public void setSord(String sord) {
this.sord = sord;
}
public String getSidx() {
return sidx;
}
public void setSidx(String sidx) {
this.sidx = sidx;
}
public Integer getRecords() {
return records;
}
public void setRecords(Integer records) {
this.records = records;
if (this.records > 0 && this.rows > 0)
{
this.total = (int) Math.ceil((double) this.records / (double) this.rows);
}
else
{
this.total = 0;
}
}
public String getSearchOper() {
return searchOper;
}
public void setSearchOper(String searchOper) {
this.searchOper = searchOper;
}
public Integer getTotal() {
return total;
}
public void setTotal(Integer total) {
this.total = total;
}
public String getSearchString() {
return searchString;
}
public void setSearchString(String searchString) {
this.searchString = searchString;
}
public Integer getRows() {
return rows;
}
public void setRows(Integer rows) {
this.rows = rows;
}
我在我的 jsp 中添加了以下网格定义:
<s:url id="remoteurl" action="jsontable"/>
<sjg:grid
id="gridtable"
caption="Listes "
dataType="json"
href="%{remoteurl}"
pager="true"
gridModel="gridModel"
rowList="10,15,20"
rowNum="15"
rownumbers="true"
>
<sjg:gridColumn name="name" index="name" title="Name" />
<sjg:gridColumn name="age" index="age" title="Age"/>
<sjg:gridColumn name="adress" index="adress" title="Adress" />
<sjg:gridColumn name="tel" index="tel" title="Tel" />
</sjg:grid>
在 struts.xml 中,我使用结果类型 json 声明我的操作
<package name="default" extends="json-default,struts-default" namespace="/">
<result-types>
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
<result-type name="json" class="org.apache.struts2.json.JSONResult" />
</result-types>
<action name="jsontable" class="com.web.action" method="execute" >
<result name="success" type = "json"></result>
</action>
</package>
拜托,你能告诉我我错过了什么
【问题讨论】:
-
您的控制台中有任何 JavaScript 错误吗?您可以手动请求您的 JSON 操作并接收有效的 JSON 响应吗?
-
感谢您的重播。没有javascript错误。而且我没有 JSON 响应,我认为问题在于 JSON 转换
-
您的课程是否扩展了任何课程?您还可以向我们展示调用 jsontable 时返回的内容/使用 LiveHTTPHeader 或您使用的任何内容/
-
不,我的课程没有扩展任何课程,但它实现了 SessionAware 和 ScopedModelDriven。抱歉,但我不明白您使用 LiveHTTPHeader 返回 jsontable 是什么意思
-
@Sarroura 如果您有任何 JSON 结果不需要的 getter 方法,请在方法上添加此注释 - @org.apache.struts2.json.annotations.JSON(serialize = false)。我的意思是,您能否使用浏览器向我展示您的操作的 JSON 响应
标签: jquery json jqgrid struts2