2014-02-21 39 views
2

我正在尝试使用,Grid(可编辑/多选)中演示的使用struts2-jquery-grid-3.7.0插件的Struts jQuery网格。使用struts2-jquery-grid插件的Struts2中的网格

Struts的形成:

<s:form namespace="/admin_side" action="Test" validate="true" id="dataForm" name="dataForm"> 
    <s:url id="remoteurl" action="TestGrid" namespace="/admin_side"/> 
    <s:url id="editurl" action="edit-grid-entry"/> 
    <sjg:grid 
     id="gridmultitable" 
     caption="Example (Editable/Multiselect)" 
     dataType="json" 
     href="%{remoteurl}" 
     pager="true" 
     navigator="true" 
     navigatorSearchOptions="{sopt:['eq','ne','lt','gt']}" 
     navigatorAddOptions="{height:280, width:500, reloadAfterSubmit:true}" 
     navigatorEditOptions="{height:280, width:500, reloadAfterSubmit:false}" 
     navigatorEdit="true" 
     navigatorView="true" 
     navigatorViewOptions="{height:280, width:500}" 
     navigatorDelete="true" 
     navigatorDeleteOptions="{height:280, width:500,reloadAfterSubmit:true}" 
     gridModel="gridModel" 
     rowList="5,10,15" 
     rowNum="5" 
     rownumbers="true" 
     editurl="%{editurl}" 
     editinline="true" 
     multiselect="true" 
     onSelectRowTopics="rowselect" 
     > 

     <sjg:gridColumn name="countryId" index="countryId" title="Id" formatter="integer" editable="false" sortable="true" search="true" sorttype="integer" searchoptions="{sopt:['eq','ne','lt','gt']}"/> 
     <sjg:gridColumn name="countryName" index="countryName" title="Country Name" editable="true" edittype="text" sortable="true" search="true" sorttype="text"/> 
     <sjg:gridColumn name="countryCode" index="countryCode" title="Country Code" sortable="true" search="true" editable="true" sorttype="text"/> 

    </sjg:grid> 
</s:form> 

动作类:

@Namespace("/admin_side") 
@ResultPath("/WEB-INF/content") 
@ParentPackage(value = "json-default") 
@InterceptorRefs(@InterceptorRef(value = "store", params = {"operationMode", "AUTOMATIC"})) 
public final class TestAction extends ActionSupport implements Serializable 
{ 
    @Autowired 
    private final transient CountryService countryService=null; 
    private static final long serialVersionUID = 1L; 
    // Result List 
    private List<Country> gridModel; 
    // Get how many rows we want to have into the grid - rowNum attribute in the grid 
    private Integer rows=5; 
    // Get the requested page. By default grid sets this to 1. 
    private Integer page=1; 
    // sorting order - asc or desc 
    private String sord; 
    // get index row - i.e. user click to sort. 
    private String sidx; 
    // Search Field 
    private String searchField; 
    // The Search String 
    private String searchString; 
    // The Search Operation ['eq','ne','lt','le','gt','ge','bw','bn','in','ni','ew','en','cn','nc'] 
    private String searchOper; 
    // Your Total Pages 
    private Integer total; 
    // All Records 
    private Integer records; 

    @Action(value = "TestGrid", 
    results = { 
     @Result(name = ActionSupport.SUCCESS, type = "json", params = {"includeProperties", "gridModel\\[\\d+\\]\\.countryId, gridModel\\[\\d+\\]\\.countryName, gridModel\\[\\d+\\]\\.countryCode", "excludeNullProperties", "true"})}, 
    interceptorRefs = { 
     @InterceptorRef(value = "json")}) 
    public String execute() { 
     records=countryService.rowCount().intValue(); 
     total=new BigDecimal(records).divide(new BigDecimal(rows), 0, BigDecimal.ROUND_CEILING).intValue(); 
     gridModel=countryService.getList(page, rows, null, null); 

     System.out.println("records "+records+" total "+total+" Page " + getPage() + " Rows " + getRows() + " Sort Order " + getSord() + " Index Row :" + getSidx()+"Search :" + searchField + " " + searchOper + " " + searchString); 
     return SUCCESS; 
    } 

    public String getJSON() { 
     return execute(); 
    } 

    public Integer getRows() { 
     return rows; 
    } 

    public void setRows(Integer rows) { 
     this.rows = rows; 
    } 

    public Integer getPage() { 
     return page; 
    } 

    public void setPage(Integer page) { 
     this.page = page; 
    } 

    public Integer getTotal() { 
     return total; 
    } 

    public void setTotal(Integer total) { 
     this.total = total; 
    } 

    public Integer getRecords() { 
     return records; 
    } 

    public void setRecords(Integer records) { 
     this.records = records;    
    } 

    public List<Country> getGridModel() { 
     return gridModel; 
    } 

    public void setGridModel(List<Country> 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 void setSearchField(String searchField) { 
     this.searchField = searchField; 
    } 

    public void setSearchString(String searchString) { 
     this.searchString = searchString; 
    } 

    public void setSearchOper(String searchOper) { 
     this.searchOper = searchOper; 
    } 

    @Action(value = "Test", 
    results = { 
     @Result(name = ActionSupport.SUCCESS, location = "Test.jsp"), 
     @Result(name = ActionSupport.INPUT, location = "Test.jsp")}, 
    interceptorRefs = { 
     @InterceptorRef(value = "defaultStack", params = {"validation.validateAnnotatedMethodOnly", "true", "validation.excludeMethods", "load"})}) 
    public String load() throws Exception { 
     return ActionSupport.SUCCESS; 
    } 
} 

如图所示following快照Previous和分页链接总是被禁用。

enter image description here

这表明,页面1 1。没有更多的页面。因此,链接被禁用。

在​​方法,但是,records被初始化为31total7Page1Rows5。所有其他属性均为始终为 null单击用于排序,搜索,编辑,添加行的链接/按钮。

我在这里忽略了什么?

回答

1

您忘记了将字段添加到json,表示电网正常工作所必需的结果。更改为

@Result(type = "json", params = {"includeProperties", "gridModel\\[\\d+\\]\\.countryId, gridModel\\[\\d+\\]\\.countryName, gridModel\\[\\d+\\]\\.countryCode, total, records, rows, page, sord, sidx, searchField, searchString, searchOper", "excludeNullProperties", "true"}) 

此外,json拦截器是没有必要的,但需要params

@InterceptorRef("params") 
+0

谢谢。这工作。它属性真的'sord'而不是'排序'?当我将它命名为“排序”时,它不起作用。 – Tiny

相关问题