Boas,
Ok, a questão é bastante simples: Como faço para passar mais um parametro além dos que o form por si mesmo já passa? ou seja, além dos parametros q o form vai passar quando se faz submit (nome, password, etc) queria passar outro especificado por mim.
Eu fiz assim:
HttpSession ses = request.getSession(true);
ses.setAttribute("code", new Integer(util.returnNumber()));
Esta foi a unica maneira q encontrei para fazer isso, criei uma variavel de sessão, mas acho q deve haver uma melhor, não? deve dar para acrescentar mais parametros além dos que o forum envia? alguém sabe como?
Obrigado.
PEACE!
cara…
ou vc usa a variavel de sessao ou entao pode usar campo hidden, q nao aparecem no form mas vc pode recuperar valores dele no servlet…
… mas assim o valor aparece no source do html quando alguem tentar ver… e eu não queria isso… não há outra maneira? da mesma maneira que há um metodo q busca parametros, n ha nenhum para adicionar parametros?
vc tah usando JSP com servlets??
sim, o utilizador digita os dados que depois de submetidos serão processados pelo servlet, e eu queria passar mais um parametro para o servlet… tou a ver que a varivel de sessão é o unico jeito mesmo…
Incluir mais parametros em um request, infelizmente, nao eh tao simples assim. Por default, usando HttpServeltRequest, vc nao consegue fazer isso, sendo necessario implementar a classe HttpServletRequestWrapper e fazer sua propria versao.
Uma vez precisei fazer algo parecido, pois desejava implementar acesso a upload de arquivos de maneira transparente e facil. Basicamente, pegue os parametros, coloque em um hashmap, e crie metodos para adicionar parametros. Logicamente, em todo o resto da aplicacao vc precisara usar tal classe. Ficaria algo como
public class MeuHttpServletRequest extends HttpServletRequestWrapper
{
private HashMap query;
public MeuHttpServletRequest(HttpServletRequest request) throws IOException
{
super(request);
query = new HashMap();
Enumeration e = request.getParameterNames();
String name;
while (e.hasMoreElements()) {
name = (String)e.nextElement();
query.put(new String(name), request.getParameter(name));
}
}
public String getParameter(String name)
{
return ((String)query.get(name));
}
public void addParameter(String name, String value)
{
query.put(name, value);
}
}
entao, vc poderia fazer
// Dentro do Servlet, nos metodos doGet/doPost/service
MeuHttpServletRequest request = new MeuHttpServletRequest(req);
// Se nao tiver o parametro x, adiciona ele
if (request.getParameter("x") == null)
request.addParameter("x", "valor");
Rafael