Como pegar "Array" no lado controle

7 respostas
C

Boa tarde PessoALL

Estou novamente aqui, solicitando 1 ajuda.

Criei 1 tela onde o usuário insere itens em 1 página “PAI”, ou seja, não tem como eu saber quantos itens será inseridos

então eu criei alguns input´s type hidden na página “PAI” com os dados incluídos, até ai tudo bem.

Exemplo do codigo que eu criei. 1 amigo meu disse que se eu quiser criar 1 Array deveria colocar sempre os nomes seguidos de [], pensando nisso criei os inputs abaixo (note que ai tem 2, mas o código js, cria de 1 a quantos necessitar)

<td align="center"><input value="acess" name="inpTpItem[]" id="inpTpItem_1" type="hidden">
    <input value="1" name="inpReferencia[]" id="inpReferencia_1" type="hidden">
    <input value="1" name="inpQtdPecas[]" id="inpQtdPecas_1" type="hidden">
    <input value="1" name="inpTipoItem[]" id="inpTipoItem_1" type="hidden">
    <input value="1" name="inpComposicao[]" id="inpComposicao_1" type="hidden">
    <input value="1" name="inpMedLiqL[]" id="inpMedLiqL_1" type="hidden">
    <input value="1" name="inpMedLiqC[]" id="inpMedLiqC_1" type="hidden">
    <input value="1" name="inpAceCort[]" id="inpAceCort_1" type="hidden">
    <input value="N" name="inpUsaPallet[]" id="inpUsaPallet_1" type="hidden">
</td>

<td align="center"><input value="acess" name="inpTpItem[]" id="inpTpItem_3" type="hidden">
    <input value="2" name="inpReferencia[]" id="inpReferencia_3" type="hidden">
    <input value="2" name="inpQtdPecas[]" id="inpQtdPecas_3" type="hidden">
    <input value="2" name="inpTipoItem[]" id="inpTipoItem_3" type="hidden">
    <input value="2" name="inpComposicao[]" id="inpComposicao_3" type="hidden">
    <input value="2" name="inpMedLiqL[]" id="inpMedLiqL_3" type="hidden">
    <input value="2" name="inpMedLiqC[]" id="inpMedLiqC_3" type="hidden">
    <input value="2" name="inpAceCort[]" id="inpAceCort_3" type="hidden">
    <input value="N" name="inpUsaPallet[]" id="inpUsaPallet_3" type="hidden">
</td>

Agora vem meu problema, como pegarei estes dados do lado do servidor ? ele irá mesmo como array? meu “server” é em TomCat

ou tem alguma outra forma, tentei enumerar os mesmos, mas como preveni, poderá dar erro caso o usuário exclua 1 numero:

Exemplo:

Item 001
Item 002
Item 003

Seria tamanho 3 dos “elementos” porém, caso ele exclua o numero 2 ?, seria Item 001 e Item 003 (exemplo do caso dos id do codigo acima) porem, daria erro pois 2 elementos para “item 003”

Tem alguma função javascript que eu consigo colocar estes inputs em array e enviar via post ?

Não sei se consegui me expressar, qualquer coisa deixa msg que tento descrever mais meu problema.

Desde já agradeço a atenção

Christian

7 Respostas

Focao

a idéia está quase certa

tem que ser algo como:

&lt;td align="center"&gt;
&lt;input type="text" name="inpTpItem[1].inpReferencia"&gt;&lt;/td&gt;
&lt;/td&gt;

Mas se tiver usando Struts tem um esquema diferente… tem que fazer um Form com item de form

C

Boa tarde

Bom, não estou usando struts, estou fazendo o html na mão mesmo com js, consegui gerar os inputs através do js, porém, como eu disse, o usuário pode inserir 4 seguidos, e no meio excluir o item 2, ai como ficaria esta numeração? 1,3,4 ? por isso estou com esta dúvida, de como colocar estes dados em array, não importando o tanto de itens dele, pois com o método size pego o tamanho e gravo os itens no banco de dados.

estou sem idéia de como fazer pra jogar pra “array” e pegar os dados do lado controle.

Christian

Focao

isso mesmo

seu array seria inpTpItem

i começando do zero ia pra cada campo

&lt;td align="center"&gt;   
&lt;input type="text" name="inpTpItem[0.campo1"&gt;&lt;/td&gt;   
&lt;input type="text" name="inpTpItem[1].campo2&gt;&lt;/td&gt;   
&lt;input type="text" name="inpTpItem[2]campo3&gt;&lt;/td&gt;   
&lt;input type="text" name="inpTpItem[3]campo4&gt;&lt;/td&gt;   
&lt;/td&gt;

no JavaScript

numeromoLinhas = document.getElementById("inpTpItem").value ;
	for(i=0; i &gt;&lt; parseInt(numeromoLinhas)-1; i++){
		alert(inpTpItem['+i+'].campo'+i);
        }
C

Focão:
isso mesmo

seu array seria inpTpItem

i começando do zero ia pra cada campo

&lt;td align="center"&gt;   
&lt;input type="text" name="inpTpItem[0.campo1"&gt;&lt;/td&gt;   
&lt;input type="text" name="inpTpItem[1].campo2&gt;&lt;/td&gt;   
&lt;input type="text" name="inpTpItem[2]campo3&gt;&lt;/td&gt;   
&lt;input type="text" name="inpTpItem[3]campo4&gt;&lt;/td&gt;   
&lt;/td&gt;

no JavaScript

numeromoLinhas = document.getElementById("inpTpItem").value ; for(i=0; i &gt;&lt; parseInt(numeromoLinhas)-1; i++){ alert(inpTpItem['+i+'].campo'+i); }

beleza, até ai entendi, porém, se o usuário excluir o numero ? e ficar assim:

&lt;td align="center"&gt;   
&lt;input type="text" name="inpTpItem[0].campo1"&gt;&lt;/td&gt;   
&lt;input type="text" name="inpTpItem[2]campo3&gt;&lt;/td&gt;   
&lt;input type="text" name="inpTpItem[3]campo4&gt;&lt;/td&gt;   
&lt;/td&gt;

No for não irá dar erro ?

Por isso que gostaria de jogar em array, sem definir qual posição é a dele

não queria eu mesmo enumerar o numero que vai no nome do array, queria algo mais “automático”

Christian

D

Olá!

Não sei se entendi direito, mas acho que o método “HttpServletRequest.getParameterValues()” vai resolver seu problema. É so você colocar as opções em uma lista e resgatar todos os valores com este método.

Espero ter ajudado!

C

Bom dia diegobsi

tentei o comando que vc passou, ele me retornou isso.

inpTpItem[]
inpReferencia[]
inpQtdPecas[]
inpTipoItem[]
inpComposicao[]
inpMedLiqC[]
inpMedLiqL[]
inpAceCort[]
inpUsaPallet[]

mesmo eu colocando 2 itens ele me retorna só 1

O que mais devo fazer ? estou meio perdido agora.

Agradeço desde ja

Christian

D

Bom dia, Cemillen!

Bom como eu te disse eu não sei se entendi seu problema. Mas ai vai um pequeno exemplo de como utilizar o método getParameterValues():

Exemplo:

Código da página que tratará a requisição.

<%

String[] arrCheckBox = request.getParameterValues(arrCheckBox);

%>

Depois disso e só percorrer o Array e resgatar os valores.

Espero ter ajudo!

Criado 9 de fevereiro de 2009
Ultima resposta 10 de fev. de 2009
Respostas 7
Participantes 3