Jquery 在spring请求中处理数据表请求参数

Jquery 在spring请求中处理数据表请求参数,jquery,spring,spring-mvc,jakarta-ee,jquery-datatables,Jquery,Spring,Spring Mvc,Jakarta Ee,Jquery Datatables,我想在我的项目中使用jquery datatable。我能够点击ajax查询并获得json响应,以便在表中显示数据。但是为了使用服务器端搜索和排序,我需要接受datatable发送的请求参数。请求参数如下表所示 draw:1 columns[0][data]:firstName columns[0][name]: columns[0][searchable]:true columns[0][orderable]:true columns[0][search][value]: columns[0]

我想在我的项目中使用jquery datatable。我能够点击ajax查询并获得json响应,以便在表中显示数据。但是为了使用服务器端搜索和排序,我需要接受datatable发送的请求参数。请求参数如下表所示

draw:1
columns[0][data]:firstName
columns[0][name]:
columns[0][searchable]:true
columns[0][orderable]:true
columns[0][search][value]:
columns[0][search][regex]:false
columns[1][data]:lastName
columns[1][name]:
columns[1][searchable]:true
columns[1][orderable]:true
columns[1][search][value]:
columns[1][search][regex]:false
columns[2][data]:age
columns[2][name]:
columns[2][searchable]:true
columns[2][orderable]:true
columns[2][search][value]:
columns[2][search][regex]:false
order[0][column]:0
order[0][dir]:asc
start:0
length:10
search[value]:
search[regex]:false
我想创建一个DTO对象来接受这种请求参数。我创建了以下DTO

public class DataTableRequestDTO {

    private int draw;
    private List<HashMap<String, String>> columns;
    private List<HashMap<String, String>> order;
    private int start;
    private int length;

    public int getDraw() {
        return draw;
    }
    public void setDraw(int draw) {
        this.draw = draw;
    }
    public List<HashMap<String, String>> getColumns() {
        return columns;
    }
    public void setColumns(List<HashMap<String, String>> columns) {
        this.columns = columns;
    }
    public List<HashMap<String, String>> getOrder() {
        return order;
    }
    public void setOrder(List<HashMap<String, String>> order) {
        this.order = order;
    }
    public int getStart() {
        return start;
    }
    public void setStart(int start) {
        this.start = start;
    }
    public int getLength() {
        return length;
    }
    public void setLength(int length) {
        this.length = length;
    }

}
字符串不是处理列[0][search][regex]的有效数据类型。请说明如何在DTO对象中处理此类请求

谢谢

我在帖子上找到了答案。我补充说

$('#myTable').DataTable({
    serverSide: true,
    ajax: {
        "url": "url",
        "data": function(data) {
            planify(data);  
        } 
    }
});
function planify(data) {
    for (var i = 0; i < data.columns.length; i++) {
        column = data.columns[i];
        column.searchRegex = column.search.regex;
        column.searchValue = column.search.value;
        delete(column.search);
    }
}

现在我可以处理这些请求对象,如

public class DataTableRequestDTO {

    private int draw;
    private List<HashMap<String, String>> columns;
    private List<HashMap<String, String>> order;
    private int start;
    private int length;

    public int getDraw() {
        return draw;
    }
    public void setDraw(int draw) {
        this.draw = draw;
    }
    public List<HashMap<String, String>> getColumns() {
        return columns;
    }
    public void setColumns(List<HashMap<String, String>> columns) {
        this.columns = columns;
    }
    public List<HashMap<String, String>> getOrder() {
        return order;
    }
    public void setOrder(List<HashMap<String, String>> order) {
        this.order = order;
    }
    public int getStart() {
        return start;
    }
    public void setStart(int start) {
        this.start = start;
    }
    public int getLength() {
        return length;
    }
    public void setLength(int length) {
        this.length = length;
    }
}
公共类DataTableRequestDTO{
私人int抽签;
私有列表列;
私有列表顺序;
私人int启动;
私有整数长度;
公共int getDraw(){
回采;
}
公共无效集合绘制(整数绘制){
this.draw=draw;
}
公共列表getColumns(){
返回列;
}
公共void集合列(列表列){
this.columns=列;
}
公共列表getOrder(){
退货单;
}
公共无效设置顺序(列表顺序){
这个。顺序=顺序;
}
public int getStart(){
返回启动;
}
公共void setStart(int start){
this.start=start;
}
公共整数getLength(){
返回长度;
}
公共void setLength(int-length){
这个长度=长度;
}
}

谢谢大家。

谢谢你的解决方案。我唯一要添加的是springMVC方法的外观:DataTableRequestDTO必须是控制器中该方法的输入,并且不应使用@RequestParam注释。请参见我的答案,以获得一个漂亮的解决方案
columns[0][search][value]=myvalue
columns[0][search][regex]=false
columns[0][searchValue]=myvalue
columns[0][searchRegex]=false
public class DataTableRequestDTO {

    private int draw;
    private List<HashMap<String, String>> columns;
    private List<HashMap<String, String>> order;
    private int start;
    private int length;

    public int getDraw() {
        return draw;
    }
    public void setDraw(int draw) {
        this.draw = draw;
    }
    public List<HashMap<String, String>> getColumns() {
        return columns;
    }
    public void setColumns(List<HashMap<String, String>> columns) {
        this.columns = columns;
    }
    public List<HashMap<String, String>> getOrder() {
        return order;
    }
    public void setOrder(List<HashMap<String, String>> order) {
        this.order = order;
    }
    public int getStart() {
        return start;
    }
    public void setStart(int start) {
        this.start = start;
    }
    public int getLength() {
        return length;
    }
    public void setLength(int length) {
        this.length = length;
    }
}