2014-02-21 1 views
2

Я пытаюсь использовать сетку struts jQuery, используя плагин struts2-jquery-grid-3.7.0, как показано на , Grid (Editable/Multiselect).Сетка в Struts2 с использованием struts2-jquery-grid plugin

распорками образуют:

<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 оснастке выстрел.

enter image description here

Это указывает на то, страница 1 из 1. Больше страниц нет. Следовательно, ссылки отключены.

В методе execute(), однако, records инициализируется 31, total к 7Page к 1Rows к 5. Все остальные свойства: всегда Нуль, если щелкнуть ссылки или кнопки для сортировки, поиска, редактирования, добавления строки.

Что я здесь просматриваю?

ответ

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', а не' sort'? Когда я называю его 'sort', он не работает. – Tiny