Então pessoal, estou com um problema para montar meu grid, com informações que são coletadas do banco.
O que acontece é o seguinte: tenho 2 problemas.
1º problema: O select que faço no banco, traz com certeza, sempre, 6 linhas de resultado (somente à carater de teste). Quando esse select popular uma ArrayList,
essa ArrayList continua com 6 linhas de resultado. Porém, ao passar esse array para o grid (através do json), esse resultado dobra, viram 12, repetindo os registros
do ArrayList. E a cada vez que atualizo a pagina com o grid, adiciona-se mais linhas no objeto json, sempre repetindo o conteúdo.
2º problema: A paginação do grid simplesmente não funciona. Clico para seguir para a proxima página de registros, mas o conteúdo do grid permanece o mesmo,
e tudo o que muda é o indicador de página atual do grid. Não sei o que pode causar isso.
Aqui vai o código da minha action.
package br.com.jm.actions;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Actions;
import org.apache.struts2.convention.annotation.ParentPackage;
import br.com.jm.beans.Atendimento;
import br.com.jm.beans.Carro;
import br.com.jm.dao.AtendimentoDAO;
import com.opensymphony.xwork2.ActionSupport;
@ParentPackage(value = "default")
@Result(type="json")
public class JsonTable extends ActionSupport {
private static final long serialVersionUID = 7815469555761189623L;
//Your result List
private List<Atendimento> gridModel = new ArrayList<Atendimento>();
//get how many rows we want to have into the grid - rowNum attribute in the grid
private Integer rows = 0;
//Get the requested page. By default grid sets this to 1.
private Integer page = 0;
// 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;
// he 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 = 0;
// All Record
private Integer records = 0;
@Actions( {
@Action(value = "/jsontable", results = {
@Result(name = "success", type = "json")
})
})
public String execute()
{
int to = (rows * page);
int from = to - rows;
//Your logic to search and select the required data.
try {
gridModel = AtendimentoDAO.listAll();
} catch (SQLException e) {
return "fudeu na listagem";
}
//Count Rows (select count(*) from custumer)
records = gridModel.size();
//calculate the total pages for the query
total =(int) Math.ceil((double)records / (double)rows);
return SUCCESS;
}
public String getJSON()
{
return execute();
}
/*Getters e Setters*/
}
Aqui vai minha pagina com o grid:
<%@taglib prefix="s" uri="/struts-tags" %>
<%@taglib prefix="sj" uri="/struts-jquery-tags" %>
<%@taglib prefix="sjg" uri="/struts-jquery-grid-tags"%>
<s:url id="remoteurl" action="jsontable"/>
<br>
<sjg:grid
id="gridtable"
caption="Customer Examples"
dataType="json"
href="%{remoteurl}"
pager="true"
gridModel="gridModel"
rowList="10,15,20"
rowNum="15"
rownumbers="false"
>
<sjg:gridColumn name="nomeUsuario" index="nomeUsuario" title="Enviado Por" sortable="true"/>
<sjg:gridColumn name="solicitacao" index="solicitacao" title="Solicitação" sortable="true"/>
<sjg:gridColumn name="status" index="status" title="Status" sortable="false"/>
<sjg:gridColumn name="data" index="ano" title="Ano" sortable="true"/>
</sjg:grid>
Espero que possam ajudar…