Tentei resumir ali no títutlo,
mas eu faço um Post no jQuery enviando um DATA, o controller é acionado mas recebe null.
O wrapper que quero enviar possui:
private Icon icon;
private List<String> tags;
no controller eu recebo:
public void save(IconTtagSuggestion dto){
O post estou fazendo assim:
$.ajax({
type: 'POST',
dataType: 'json',
url: action,
data: JSON.stringify({dto: data}),
success: function(data){
console.log("OK");
console.log(data);
}
});
O resultado do JSON stringify é:
"dto":{"icon":"BUS","tags":["Carro","automóvel"]}}
Obrigado !!
Também tentei:
"dto":
{"icon":"LEAF"},
{ 'tags[0]' : 'teste' }
}
e assim:
{"dto":
{ "icon":"TEXT_SMALLER",
'tags[0]' : 'texto',
'tags[1]' : 'word'
}
}

o certo seria fazer algo como:
$.ajax({
//...
data: {"dto.icon": "LEAF", "dto.tags[0]": 'teste'}
);
a regra é a mesma dos inputs… e vc não precisa passar um json serializado, passa os atributos assim que vai funcionar.
Então manin, o JSON ficou assim:
{
"dto.icon":"LEAF",
'dto.tags[0]' : 'natureza',
'dto.tags[1]' : 'teste',
'dto.tags[2]' : 'um'
}
e continuo recebendo null no construtor 
Opa! o Rafael Guerreiro,
me ajudou aqui… Ao invés de montar a String do JSON eu apenas montei o objeto…
e deu tudo certo…
obrigado !!