Problema com Vraptor 3.4.1 e Spring 3.1.1 (html select)

Olá pessoal,

Estou tendo um problema que só acontece na versão 3.1.1 ou 3.1.2 do Spring (testei somente nessas). O problema é o seguinte:

Eu tenho uma jsp com um campo select, com o atributo “multiple” ativado:

<select name="productIds" multiple="multiple">
      <option value="1">Produto 1</option>
      <option value="2">Produto 2</option>
</select>

Quando eu clico no botão submit, no meu Controller eu recebo como parâmetro um objeto List productIds. Até ai nenhum problema, sempre funcionou perfeitamente na versão 3.0.5 do Spring, porém quando eu atualizei para a 3.1.1 ou 3.1.2, depois que eu seleciono os produtos e clico no botão, o objeto não está mais sendo preenchido com as opções escolhidas e sempre aparece a valor ImportStack: [] ConfigurationClassParser$ImportStack quando estou debugando este objeto.

Alguem já teve algum problema parecido?

mas acontece só nesse caso?

Até agora, eu só consegui identificar o problema nos métodos que eu recebo uma Lista como parâmetro. Nos outros casos por enquanto está tudo funcionando normalmente.

Eu fiz o seguinte teste: Eu deixei todos os jars do Spring 3.1.1 e voltei atrás somente os jars org.springframework.context-3.0.5 (a classe ConfigurationClassParser está nesse pacote) , org.springframework.context.support-3.0.5 e org.springframework.web-3.0.5 . Fazendo essas alterações o problema é resolvido.

Até agora, eu só consegui identificar o problema nos métodos que eu recebo uma Lista como parâmetro. Nos outros casos por enquanto está tudo funcionando normalmente.

Eu fiz o seguinte teste: Eu deixei todos os jars do Spring 3.1.1 e voltei atrás somente os jars org.springframework.context-3.0.5 (a classe ConfigurationClassParser está nesse pacote) , org.springframework.context.support-3.0.5 e org.springframework.web-3.0.5 . Fazendo essas alterações o problema é resolvido.[/quote]

Só atualizando este tópico caso seja de alguma ajuda, consegui resolver esse problema removendo o jar do ognl do meu classpath e deixando somente o do iogi como o instanciador de objetos padrão. Como eu tinha os dois jars no classpath, ele executava sempre a classe OgnlParametersProvider ao invés da IogiParametersProvider. Acredito que seja alguma coisa relacionada ao receber uma List como parâmetro de um método do Controller e com a versão 3.1.1+ do Spring está dando algum erro na classe SpringBasedContainer, mas é só um palpite, realmente não sei o motivo.

Valeu.

Estou tendo o mesmo problema, conseguiu solucionar sem precisar voltar a versao do spring.

Reportando mais um problema, quando eu uso o JAR do IOGI, não está obedecendo conforme os índices que estão no formulário por exemplo.

  <form>
    <input name="parametros[1]" value="1" type="hidden">
    <input name="parametros[0]" value="0">
  </form>

Ou seja, de acordo que foi criado as inputs, serão os índices, antes não tinha este comportamento, ele obedecia perfeitamente os índices setados no formulário.

interessante… pode reportar esse bug aqui por favor:

ou

Consegui resolver o problema sem precisar trocar nenhum jar, porém tive que trocar o parâmetro de List para ArrayList. Fiz os testes com as versões ognl-2.7.3 e spring-3.1.1.

Abs

Com o ArrayList no meu caso, nao resolveu, tive que reescrever o metodo parseParameter, substituindo a linha 108

		//Enumeration<?> enumeration = request.getParameterNames();
		//por
		Map<String,String[]> maps = new TreeMap<String,String[]>(request.getParameterMap());
		Enumeration<?> enumeration = Collections.enumeration(maps.keySet());

Desta forma resolveu a parte da ordenação.