Request.getParameterMap

4 respostas
_

Olá, boa noite a todos.

Erro aparentemente besta, mas já procurei bastante e não encontrei solução em lugar algum …

Quando eu faço request.getParameterMap e tento imprimir isso, as keys vem com o nome correto, mas o values não são mostrados corretamente ( Lang.String.etc ).

Bizarro que se eu peço um parametro específico ( request.getParamenter( “meuParametro” ) o valor aparece corretamente.

Já tentei fazer um cast para string, mas mesmo assim o erro persiste.

A maneira que estou a tentar neste momento:

String s = "";

		Map map = request.getParameterMap();
		Map.Entry entry;

		Iterator i = map.entrySet().iterator();
		
		while( i.hasNext() )
		{
			entry = ( Map.Entry ) i.next();
			s += "
" + entry.getKey() + ": " + entry.getValue().toString();
		}
		
		JOptionPane.showMessageDialog( null, s );

Muito obrigado \o/

4 Respostas

R

Segundo a documentacao, o value retornado eh um array de strings, ao inves de uma unica string… Isso acontece pq dependendo de como foi montando o form, pode vir mais de um valor para o mesmo parametro. Portanto, voce deve manipular isso no teu codigo.

Rafael

_

Saquei cara! Mas ainda acho muito estranho, pois se eu mando dar um print num array de Strings, os elementos são mostrados corretamente.

Vou fazer os testes aqui, obrigado rafael :smiley:

_

Esta é a solução que eu encontrei (esqueci de postar ontem). A soma à string e o
são gambiarras provisórias hehe

Map mapRequest = request.getParameterMap();
		Map.Entry entryRequest;
		Iterator iteratorRequest = mapRequest.entrySet().iterator();
		
		String s = "";
		String key;
		
		while( iteratorRequest.hasNext() )
		{
			entryRequest = ( Map.Entry ) iteratorRequest.next();

			key = (String) entryRequest.getKey();
			
			for( int i = 0; i < request.getParameterValues( key ).length; i++ )
				s += key + ": " + request.getParameterValues( key )[ i ] + "<br>";
		}

Chique? Não chique? Melhor eu estudar artes plásticas? :mrgreen:

Valeu \o/

A

para pegar dados de um form bem simples (com apenas um valor por chave) eu fiz assim

Map<String,String[]> params = Collections.synchronizedMap((Map<String, String[]> ) new HashMap<String, String[]>(request.getParameterMap()));

for (Map.Entry<String, String[]> e : params.entrySet())
        System.out.println(e.getKey() + ": " + e.getValue()[0]);

Críticas e dicas são bem vindas! :slight_smile:

Criado 25 de fevereiro de 2004
Ultima resposta 9 de mai. de 2008
Respostas 4
Participantes 3