Raster in Struts2 mit struts2-jquery grid-plugin
Ich versuche mit Struts jQuery raster mit den struts2-jquery-grid-3.7.0
plugin, wie gezeigt, auf die Vitrine, Netz (Editable/Multiselect).
Die Struts-form:
<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>
Die Aktion Klasse:
@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;
}
}
Nächsten und vorherigen Paginierung links sind immer deaktiviert, wie gezeigt, in der folgende snap shot.
Es zeigt, Seite 1 von 1. Es gibt keine weiteren Seiten. Also, die links sind deaktiviert.
In der execute()
Methode, jedoch records
initialisiert 31
, total
zu 7
Page
zu 1
Rows
zu 5
. Alle anderen Eigenschaften sind immer null, ob oder nicht, links/buttons für Sortieren, suchen, Bearbeiten, hinzufügen einer Zeile angeklickt werden.
Was bin ich Blick hier?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie vergessen, die Felder zu
json
Ergebnis, die notwendig sind für die grid-Funktion richtig. ÄnderungAuch
json
interceptor ist nicht notwendig, aberparams
erforderlich ist.sord
und nichtsort
? Wenn ich es benennen zusort
funktioniert es nicht.