Tenho uma página em JSP que recebe parâmetros (via check box) e gero uma lista que envio para a Servlet e logo em seguida para as classes para consultar no BD e retornar o resultado em uma tabela, até aqui beleza.
Só que eu tenho um botão de gerar arquivo (Em EXCEL) que tenho que utilizar o mesmo parâmetro do início (selecionado no check box) para enviar uma lista para gerar o arquivo, e não sei como fazer isso… tenho a funcionalidade de gerar arquivo pronta, só não sei como enviar estes mesmos parâmetros (lista) para gerá-lo.
A primeira lista que mando para o servlet é a MultiplosDadosHist
essa é a diferença entre usar um framework e não usar nada, vc vai ter q bolar a soluçao…, mais tudo é fácil, sempre veja o codigo fonte gerado e vá ajustando.
É assim, eu recebo essa lista e está beleza… ela é enviada e retorna os valores e monta uma tabela na tela com os resultados…
Só que…
Tenho um botão na tela, onde será gerado o arquivo em excel, e para isso… eu preciso bolar uma maneira de ter deixado gravado os parâmetros consultados, para utilizar eles novamente…
Eu tentei criar um outro vetor de String [] MultiplosDadosHist2 que recebe os parâmetros consultados na primeira vez (MultiplosDadosHist) e jogar oculto para a jsp, e assim que clicar o botão de gerar arquivo, eu pego esse vetor de novo, para enviar para a classe de gerar arquivo… só que como ele grava um endereço de memória da NULL POINTER…
Ou seja, ele consulta e retorna o valor na mesma tela… e nesse mesma tela tem a opção de baixar o resultado em excel… ai preciso do mesmo parâmetro que utilizei na primeira consulta.
Agora ta enviando os valores… mas para "Setar a outra lista para enviar para a classe ta dando null pointer…
Eu pego ao clicar no botão gerar arquivo a “nova lista”::
[code]// PEGAR A LISTA REENVIADA
//String statusLinha = request.getParameter(“status”);
String[] MultiplosDadosHist2 = request.getParameterValues(“MultiplosDadosHist2”);
VerificarRegistroGeraRelatorioHist vr;
try {
vr = new VerificarRegistroGeraRelatorioHist();
// MANDAR A LISTA
vr.CriadorArquivoHist(MultiplosDadosHist2);[/code]
Só que quando entra na classe da null pointer
nessa partte
public void CriadorArquivoHist(
String[] MultiplosDadosHist2) {
GeraRelatorioDAO dao = new GeraRelatorioDAO();
List<Integer> tecnologias = new ArrayList<Integer>();
List<Integer> operadoras = new ArrayList<Integer>();
List<Integer> status = new ArrayList<Integer>();
int cod = 0;
for (String mult : MultiplosDadosHist2) { // QUANDO ENTRA AQUI DA NULL POINTER
System.out.println("Valor do Vetor: " + mult);
Outro detalhe é que não sei como preencher essa lista de novo, pois com vírgula ou não teria que tratar os valores em separado…
Mas eu fiz isso… o seu opção é o meu “MultiplosDadosHist2” que coloquei no GET para pegar o arquivo e fazer o tratamento correto…
Fiz isso que você passou, funcionou, só que ao tentar pegar novamente (post anterior meu) ele ta vindo nulo… mesmo que ele mostre na tela o valor correto…
Só estou com um problema na montagem dos dados… pois ele está passando separadamente os valores ao invés de juntos…
se mandar um só beleza, funciona,
se eu mandar dois parâmetros, ele não monta com os dois juntos… e sim, manda um, depois o outro… gerando consultas diferentes…
Eu entendi o que está acontecendo… ele está enviando tudo junto com vírgula separando o valor A do B… então ele ta pegando apenas o primeiro valor dentro do for para “desmontar o vetor” …
Vc sabe como posso validar isso separado?
faço a verificação assim:
for (String mult : MultiplosDadosHist2) {
System.out.println("Valor do Vetor 2: " + mult);
if (mult.contains("Alarmes") || mult.contains("AA")
|| mult.contains("AB") || mult.contains("AC")
|| mult.contains("AD")) {
if (mult.contains("Alarmes")) {
cod = 22;
} else if (mult.contains("AD")) {
cod = 26;
} else if (mult.contains("AB")) {
cod = 24;
} else if (mult.contains("AC")) {
cod = 25;
} else {
cod = 23;
}
System.out.println("Tecnologia: " + cod);
// CRIA LISTA DE TECNOLOGIAS
tecnologias.add(cod);
String []split = "abc,def,ghi".split(",");
for (String cod : split) {
//faiz oq vc tem q fazer com cada codigo
//se tiver q fazer um por um entao usa só o cod
//se tiver q usar tudo usa só o split
}