Minha intenção era que chegasse no metodo o array com apenas uma posicao (e os campos do objeto preenchidos). Mas o tamanho do array, no controller, é 4. Sendo que o primeiro item tem os campos preenchidos com o que veio na requisição, e os outros, não. Minha impressão é que o array está sendo criado com o numero de ocorrencias em que o parametro aparece na requisição (no caso, 4).
Dando uma olhada aqui no IOGI, me parece que o problema está nessa linha:
Se esse mapa representa os parametros agrupados por chave ([0], [1], etc), então o tamanho total do array a ser criado seria keys.size(), não values.size()
Ou o meu jeito de usar o array está incorreto? Já fiz um teste recebendo um List e funcionou, mas nesse caso específico gostaria de usar o array (pra reaproveitar um método que já existe)
No caso, “(pra reaproveitar um método que já existe)”, troque o método para listas ou faça assim:
lista.toArray(new Teste[0]);
DICA: Você pode usar o “Arrays.asList(testes)” para transformar de Array para Listas…[/quote]
Pois é, é que o tal método já existente é exposto como serviço rest, e eu não tava muito numas de mudar o parametro de entrada dele hehe…eu estou fazendo como voce sugeriu, recebo a lista na outra action, converto pro array e passo pro outro metodo. De qualquer forma, esse negocio de receber o array nao deveria funcionar?
Sim, deveria… Mas considerando o fato de que Array quase sempre é um péssimo negócio, vale mais a pena você modificar a sua action.
Como ela já está sendo usada, você pode fazer algo assim:
@Component
public class CustomArrayInstantiator implements Instantiator<Object> {
// copie aquela classe e troque justamente a parte que está dando problema.
}