Tenho uma página que tem dois campos com o mesmo name, eles estão assim:
<input type="text" name="nome[0]">
<input type="text" name="nome[1]">
como pego eles na servlet?
request.get???
ja tentei de varias formas e não consegui…
Tenho uma página que tem dois campos com o mesmo name, eles estão assim:
<input type="text" name="nome[0]">
<input type="text" name="nome[1]">
como pego eles na servlet?
request.get???
ja tentei de varias formas e não consegui…
[quote=xxmayconxx]Tenho uma página que tem dois campos com o mesmo name, eles estão assim:
<input type="text" name="nome[0]">
<input type="text" name="nome[1]">
como pego eles na servlet?
request.get???
ja tentei de varias formas e não consegui…[/quote]
request.getParameter(String nome);
eu fiz desse modo e não deu certo, nessa parte deveria ser usado o getParameterValues, que é pra array, mas ele não funciona com esse campos.
Ponha os seus campos num forma assim:
[code]
E na Servlet você coloca request.getParameter(String nome);
troca os nomes para : nome1 e nome2, ve se dá certo ai.
Se eu colocar nome1 e nome2 eu sei que funciona, mas tenhoque fazer dessa forma.
se uso request.getParameter("nome");
não funciona, chega null na servlet
[quote=xxmayconxx]Se eu colocar nome1 e nome2 eu sei que funciona, mas tenhoque fazer dessa forma.
se uso request.getParameter("nome");
não funciona, chega null na servlet[/quote]
Eu coloquei o <form action="MinhaServlet">
<input type="text" name="nome[0]">
<input type="text" name="nome[1]">
<input type="submit" value="Manda para a Servlet">
</form>
E na classe Minha Servlet eu coloquei System.out.println(request.getParameter("nome[1]"));
Funcionou perfeitamente.
Sim, beleza, se você especificar o indice ali vai, mas se pega só o indice 1, eu quero pegar o array interio com todos os indices de um vez.Desse jeito ai eu teria que pegar um por vez na servlet
Você esta querendo pegar as informações e colocar dentro de um Array é isso?
Isso, mas usando esse modo que eu falei
Tenta isso aqui então:
ArrayList<String> lista = new ArrayList<String>();
int i = 0;
while (true) {
if (request.getParameter("nome[" + i + "]") == null) {
break;
}
lista.add(request.getParameter("nome[" + i + "]"));
i++;
}
Não testei mas acho deveria funcionar.
Simples? Quer dizer, nem tanto, não acha?
A primeira coisa seria mudar o método para GET, pois, pelo que entendi, está usando POST. Isso permitiria saber como os parâmetros estão sendo passados.
Eis um pequeno exemplo, e duas formas de se resolver
index.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!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">
</head>
<body>
<form action="ServletTeste">
[0] <input type="text" name="nome[0]"/>
<br/>
[1] <input type="text" name="nome[1]"/>
<br/>
<input type="submit" value="Teste"/>
</form>
</body>
</html>
ServletTeste.java
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class ServletTeste
*/
public class ServletTeste extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Map<String, Object> maps = request.getParameterMap();
Iterator<String> mp = maps.keySet().iterator();
List<String> listaParam = new ArrayList<String>();
while(mp.hasNext()){
listaParam.add(request.getParameter(mp.next()));
}
PrintWriter out = response.getWriter();
out.println("<html>");
for(String s : listaParam){
out.println(s);
out.println("<br/>");
}
out.println("</html>");
System.out.println();
}
}
URL
[quote]
http://localhost:8080/bla/ServletTeste?nome[0]=este&nome[1]=teste[/quote]
Saída
Ah, sim, depois de descobrir como os parâmetros são tratados, pode voltar para POST.
mas os nomes deles são diferentes em tese, uma vez fiz algo parecido usei dessa forma
<input type="text" name="nome">
<input type="text" name="nome">
drsmachado, eu cosegui o mesmo que você, que foi printar os names no console mas não os seus valores
Camarada, uma vez que você obtém os nomes dos parâmetros, você consegue obtê-los.
Eu alterei a servlet, para que ela permita isto.
Mas, qualquer pessoa que utilize o cérebro poderia fazer algo como
List<String> lista = new ArrayList<String>();
for(mp.hasNext()){
lista.add(request.getParameter(mp.next()));
}
E ter, em cada posição da lista, cada um dos parâmetros passados.
Para isto, só é necessário um pouco mais de estudo dentro dos recursos que o java disponibiliza, esforço e dedicação.
Entendi, valeu
Sem_Nome, o seu método funcionou, vou colocar o tópico como resolvido.