Receber parâmetros datatable via post com vraptor

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;
	}
}

@homerguj você conseguiu solucionar esse problema ?
estou agarrado com isso também.
Obrigado.

Boa tarde @cloudcon,

Eu troquei o componente. Estou usando com muito sucesso o bootstrap-table. Dá de 10 no anterior.
http://bootstrap-table.wenzhixin.net.cn

Criei o DTO abaixo para retornar a consulta.

public class BootstrapTableDTO<T> implements Serializable {
	private static final long serialVersionUID = 1L;
	@Getter @Setter
	private Long total;
	@Getter @Setter
	private List<T> rows;
	
	public BootstrapTableDTO(){
		total = 0L;
		rows = new ArrayList<T>();
	}

	public BootstrapTableDTO(Long total, List<T> rows) {
		super();
		this.total = total;
		this.rows = rows;
	}
}

E recebo os parâmetros da View dessa forma:

@Get("/search")
public void search(String search, String sort, String order, Integer limit, Integer offset){
	BootstrapTableDTO dto = new BootstrapTableDTO();

	/* seu código aqui */

	result.use(Results.json()).withoutRoot().from(dto).recursive().serialize();
}

Espero ter ajudado :wink: