Olá Pessoal!
Estou utilizando o JQuery Plugin, e ele é mto bom, recomendo!
Contudo estou tendo uma dificuldade, para passar os parâmetros da pesquisa antes de popular o mesmo. É possível
passar os parâmetros para a action antes de populá-lo. Existe um botão de pesquisa no JQuery Plugin, que permite
refinar a pesquisa, contudo só é possível pesquisar por um campo por vez e minha pesquisa precisa de dois parâmetros
Eu pensei em colocar dois input text e um botão para chamar a action, mas não sei como chamar a action e popular o JQuery ao mesmo tempo.
A Primeira coisa q fiz foi criar minha action, veja abaixo:
import gsa.dao.ConnectionFactory;
import gsa.dao.Ven_notaentrada;
import gsa.dao.Ven_notaentradaDAO;
import java.sql.Connection;
import java.util.List;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
@ParentPackage( value="json-default" )
public class ListaNotaEntradaJqAction {
private int resumo = 0;
private int id_regional = 1;
private List<Ven_notaentrada> vnes;
//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 = "asc";
// 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;
public int getResumo() {
return resumo;
}
public void setResumo(int resumo) {
this.resumo = resumo;
}
public int getId_regional() {
return id_regional;
}
public void setId_regional(int idRegional) {
id_regional = idRegional;
}
public List<Ven_notaentrada> getVnes() {
return vnes;
}
public void setVnes(List<Ven_notaentrada> vnes) {
this.vnes = vnes;
}
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 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 String getSearchField() {
return searchField;
}
public void setSearchField(String searchField) {
this.searchField = searchField;
}
public String getSearchString() {
return searchString;
}
public void setSearchString(String searchString) {
this.searchString = searchString;
}
public String getSearchOper() {
return searchOper;
}
public void setSearchOper(String searchOper) {
this.searchOper = searchOper;
}
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;
}
@Action(value = "/listaNotaEntrada", results = {
@Result(name = "ok", type = "json" )
})
public String execute(){
int to = (rows * page);
int from = to - rows;
System.out.println("listajson");
Connection conn = new ConnectionFactory().getConnection();
vnes = new Ven_notaentradaDAO(conn).getListaFrom( from+1,to, sidx + " "+ sord , id_regional,resumo);
records = 40;
//calculate the total pages for the query
total =(int) Math.ceil((double)records / (double)rows);
records = vnes.size()*page;
return "ok";
}
}
A linha mostrada acima, e abaixo é onde eu preciso passar os parâmetros: id_regional e resumo.
vnes = new Ven_notaentradaDAO(conn).getListaFrom( from+1,to, sidx + " "+ sord , id_regional,resumo);
Veja q eu até criei eles como field da action para q eu possa passá-los por parãmetro.
Em seguida criei o jsp com o jquery plugin, veja abaixo:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
<%@ taglib prefix="sjg" uri="/struts-jquery-grid-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<sj:head jqueryui="true" jquerytheme="start" />
<script type="text/javascript">
function fnc_listaNota(){
var idregional = $('#text_idregional').value;
var resumo = $('#text_resumo').value;
$('#nota').load('<c:url value="listaNotaEntrada"/>?id_regional='+ idregional );
}
</script>
<sj:head jqueryui="true" jquerytheme="start" />
</head>
<body>
<h1>Notas</h1>
<br></br>
<form id="frmPesquisa" action="listaNotaEntrada" method="get" >
Id. Regional: <input type="text" id="text_idregional" name="id_regional" />
Resumo: <input type="text" id="text_resumo" name="resumo" /><br/>
<input type="submit" onclick="fnc_listaNota()" value="Salvar"/>
</form>
<div id="nota">
<s:url id="remoteurl" action="listaNotaEntrada"/>
<sjg:grid
id="Table"
caption="Entrada de Notas"
dataType="json"
href="%{remoteurl}"
pager="true"
navigator="true"
navigatorAddOptions="{height:280,reloadAfterSubmit:true}"
navigatorEditOptions="{height:280,reloadAfterSubmit:false}"
navigatorEdit="true"
navigatorView="true"
navigatorDelete="true"
navigatorDeleteOptions="{height:280,reloadAfterSubmit:true}"
gridModel="vnes"
rowList="10,15,20"
rowNum="15"
rownumbers="true"
editurl="%{editurl}"
editinline="false"
multiselect="false"
viewrecords="true"
>
<sjg:gridColumn
name="id_entrada"
index="id_entrada"
title="Id. Entrada"
formatter="integer"
sortable="false"
width="100"
editable="true"
edittype="text"
/>
<sjg:gridColumn
name="descricao"
index="descricao"
title="Descricao"
sortable="true"
width="300"
editable="true"
edittype="text" />
<sjg:gridColumn
name="id_regional"
index="id_regional"
title="Regional"
sortable="true"
width="100"
editable="true"
edittype="text"
/>
<sjg:gridColumn
name="ano"
index="ano"
title="Ano"
sortable="true"
width="100"
editable="true"
edittype="text"
/>
<sjg:gridColumn
name="faturado"
index="faturado"
title="Faturado"
sortable="true"
width="100"
editable="true"
edittype="text"
/>
</sjg:grid>
</div>
</body>
</html>
Tentei criar um ajax para executar a action passando apenas um dos parâmetros para teste mas não da certo.
Pessoal será q tem alguma forma de fazer isto?
Agradeço o apoio de todos, espero ter sido claro. Obrigado pessoal!