Request.getParameterMap

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/

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/

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: