Olá pessoal,
Estou trabalhando com VRaptor 4 + AngularJS e utilizando angular-datatable para realizar as consultas.
Estou com problemas para receber os parâmetros que são enviados como array.
O componente datatable submete os parâmetros para o controller do VRaptor no seguinte formato:
draw:1
columns[0][data]:0
columns[0][name]:
columns[0][searchable]:true
columns[0][orderable]:true
columns[0][search][value]:
columns[0][search][regex]:false
columns[1][data]:1
columns[1][name]:
columns[1][searchable]:true
columns[1][orderable]:false
columns[1][search][value]:
columns[1][search][regex]:false
columns[2][data]:2
columns[2][name]:
columns[2][searchable]:true
columns[2][orderable]:false
columns[2][search][value]:
columns[2][search][regex]:false
order[0][column]:0
order[0][dir]:asc
start:0
length:10
search[value]:asdf
search[regex]:false
No controller tenho a seguinte função:
@Post("/modulo/teste")
public void testee(List<Columns> columns, Order[] order, Search search, Integer start, Integer draw, Integer length){
//Na linha abaixo é possível obter o parâmetro search[value]
System.out.println(request.getParameter("search[value]"));
}
Os parâmetros simples são recebidos normalmente, entretanto os parâmetros columns, order e search ficam nulos ou vazios. Tentei receber os parâmetros submetidos como array ou objetos usando list ou array, conforme código acima, mas sem sucesso. Injetando o @Inject HttpServletRequest request;
é possível receber os parâmetros. Minha dúvida é, existe uma forma mais elegante de receber esses parâmetros sem ser através HTTpServeletRequest?
Para conhecimento, os códigos dos objetos Search, Columns, Order:
public class Search {
@Getter @Setter String value;
@Getter @Setter Boolean regex;
public Search(){
this.value = "";
this.regex = true;
}
public Search(String value, Boolean regex){
this.value = value;
this.regex = regex;
}
}
public class Columns {
@Getter @Setter String data;
@Getter @Setter Boolean searchable;
@Getter @Setter Boolean orderable;
@Getter @Setter Search search;
public Columns(){
super();
this.data = "";
this.searchable = true;
this.orderable = true;
this.search = new Search();
}
public Columns(String data, Boolean searchable, Boolean orderable, Search search) {
super();
this.data = data;
this.searchable = searchable;
this.orderable = orderable;
this.search = search;
}
}
public class Order {
@Getter @Setter Integer column;
@Getter @Setter String dir;
public Order() {
super();
this.column = 0;
this.dir = "";
}
public Order(Integer column, String dir) {
super();
this.column = column;
this.dir = dir;
}
}