Bom dia pessoal, tudo bem?
Eu estou tentando fazer com que o VRaptor consiga receber uma List<List><String>> usando ajax, ou seja, eu estou tentando enviar um array de arrays de String para o Servidor.
Eu comecei dessa forma:
//Controller
public void remove(Report report, List<List><String>> data) {
// report veio preenchido como deveria, mas data vem vazia.
}
// JS
$.ajax({
url: varUrlToRemove,
type: 'post',
dataType: 'json',
data: {'report':varReportId, 'data':prepareSelecteds(rowSelectedIDs)}, // O método prepareSelecteds retorna um array com arrays de String. Algo assim: [['2:2', '3:1'], ['6:1', '4:6'], ['1:4', '4:7']]
success: function (data) {
$($this).attr('disabled', false).button('refresh');
if (data.code == '202') {
$('.modalForm').dialog('close');
$('#search').click();
$.success(data.message);
} else {
$.error(data.message);
}
},
error: function () {
$($this).attr('disabled', false).button('refresh');
$.error(errorMessage);
}
});
Depois eu pensei em criar uma classe para encapsular o List<String>, mas mantendo o envio do AJAX:
public class RemoveCriteria {
private final List<String> data;
private RemoveCriteria(List<String> data) {
if (!Service.notEmpty(data))
data = new ArrayList<String>();
this.data = data;
}
// Getter
}
// Controller
public void remove(Report report, List<RemoveCriteria> data) {
// data continua vazio.
}
Por fim, tentei mudar o ajax para fazer um array de objeto e cada objeto tem um array dentro. Mas ainda assim não funcionou.
-EDIT-
Eu acabei de pensar em unir o conteúdo dos arrays internos separando-os por pipe “|” e depois fazer um split no java. É uma boa solução?