繁体   English   中英

在Spring Boot的服务器端使用DataTables

[英]Using DataTables server-side with Spring Boot

我在Java Spring Boot项目中使用jQuery DataTables。 使用DataTables的服务器端处理时,它将发送带有请求参数的AJAX请求,例如:

?columns[0][data]=0
&columns[0][name]=name
&columns[0][searchable]=true
&columns[0][orderable]=true
&columns[0][search][value]=Tom
&columns[0][search][regex]=false
&columns[1][data]=1
&columns[1][name]=address
&columns[1][searchable]=true
&columns[1][orderable]=true
&columns[1][search][value]=
&columns[1][search][regex]=false

到我的服务器。

如何将这些请求参数转换为Java对象以进行处理? 本教程仅指出

在大多数现代服务器端脚本环境中,这些数据将以数组的形式自动提供给您。

但是我找不到在Java中执行此操作的任何方法,尤其是使用Spring Boot的@RequestParameter。

谢谢您的帮助!

创建以下类,忽略包名称//DataTableRequest.java

package com.employee.app.model;

import java.util.*;
import com.fasterxml.jackson.annotation.*;

public class DataTableRequest {
private String draw;
private List<Column> columns;
private List<Order> order;
private String start;
private String length;
private Search search;
private String empty;

@JsonProperty("draw")
public String getDraw() { return draw; }
@JsonProperty("draw")
public void setDraw(String value) { this.draw = value; }

@JsonProperty("columns")
public List<Column> getColumns() { return columns; }
@JsonProperty("columns")
public void setColumns(List<Column> value) { this.columns = value; }

@JsonProperty("order")
public List<Order> getOrder() { return order; }
@JsonProperty("order")
public void setOrder(List<Order> value) { this.order = value; }

@JsonProperty("start")
public String getStart() { return start; }
@JsonProperty("start")
public void setStart(String value) { this.start = value; }

@JsonProperty("length")
public String getLength() { return length; }
@JsonProperty("length")
public void setLength(String value) { this.length = value; }

@JsonProperty("search")
public Search getSearch() { return search; }
@JsonProperty("search")
public void setSearch(Search value) { this.search = value; }

@JsonProperty("_")
public String getEmpty() { return empty; }
@JsonProperty("_")
public void setEmpty(String value) { this.empty = value; }
}

// Column.java

package com.employee.app.model;

import java.util.*;
import com.fasterxml.jackson.annotation.*;

public class Column {
private String data;
private String name;
private String searchable;
private String orderable;
private Search search;

@JsonProperty("data")
public String getData() { return data; }
@JsonProperty("data")
public void setData(String value) { this.data = value; }

@JsonProperty("name")
public String getName() { return name; }
@JsonProperty("name")
public void setName(String value) { this.name = value; }

@JsonProperty("searchable")
public String getSearchable() { return searchable; }
@JsonProperty("searchable")
public void setSearchable(String value) { this.searchable = value; }

@JsonProperty("orderable")
public String getOrderable() { return orderable; }
@JsonProperty("orderable")
public void setOrderable(String value) { this.orderable = value; }

@JsonProperty("search")
public Search getSearch() { return search; }
@JsonProperty("search")
public void setSearch(Search value) { this.search = value; }
}

// Search.java

package com.employee.app.model;

import java.util.*;
import com.fasterxml.jackson.annotation.*;

public class Search {
private String value;
private String regex;

@JsonProperty("value")
public String getValue() { return value; }
@JsonProperty("value")
public void setValue(String value) { this.value = value; }

@JsonProperty("regex")
public String getRegex() { return regex; }
@JsonProperty("regex")
public void setRegex(String value) { this.regex = value; }
}

// Order.java

package com.employee.app.model;

import java.util.*;
import com.fasterxml.jackson.annotation.*;

public class Order {
private String column;
private String dir;

@JsonProperty("column")
public String getColumn() { return column; }
@JsonProperty("column")
public void setColumn(String value) { this.column = value; }

@JsonProperty("dir")
public String getDir() { return dir; }
@JsonProperty("dir")
public void setDir(String value) { this.dir = value; }
}

默认情况下,DataTables将请求作为FormData发送,以使其作为Json发送该请求,请执行以下操作。

 $(document).ready(function() { $('#datatableId').DataTable( { "processing": true, "serverSide": true, "ajax":{ url: "your_processing_endpoint", type:"POST", contentType:"application/json", data:function(d){ return JSON.stringify(d) } }, //include other options } ); } ); 

然后在控制器操作中,假设您使用的是Spring boot,请执行以下操作

@RequestMapping(value="your_processing_endpoint",method="RequestMethod.POST")
public ResponseEntity<?> processDataTableRequest(@RequestBody DataTableRequest 
datatableRequest){
//you can add your logic here 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM