Struts 2 + jQuery: Problemas com grid

1 resposta
R

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…

1 Resposta

R

Ninguem tem idéia? Nem mesmo de alguma ferramenta que faça algo parecido e seja mais facil?

Criado 9 de março de 2012
Ultima resposta 9 de mar. de 2012
Respostas 1
Participantes 1