1、如何接收参数,这个代码是参考老外的代码。不过核心逻辑老外写的太差了。
public class DataTablesInput {
/**
* Draw counter. This is used by DataTables to ensure that the Ajax returns
* from server-side processing requests are drawn in sequence by DataTables
* (Ajax requests are asynchronous and thus can return out of sequence).
* This is used as part of the draw return parameter (see below).
*/
@NotNull
@Min(0)
private Integer draw;
/**
* Paging first record indicator. This is the start point in the current
* data set (0 index based - i.e. 0 is the first record).
*/
@NotNull
@Min(0)
private Integer start;
/**
* Number of records that the table can display in the current draw. It is
* expected that the number of records returned will be equal to this
* number, unless the server has fewer records to return. Note that this can
* be -1 to indicate that all records should be returned (although that
* negates any benefits of server-side processing!)
*/
@NotNull
@Min(-1)
private Integer length;
/**
* Global search parameter.
*/
@NotNull
private SearchParameter search;
/**
* Order parameter
*/
@NotEmpty
private List<OrderParameter> order;
/**
* Per-column search parameter
*/
@NotEmpty
private List<ColumnParameter> columns;
public DataTablesInput() {
this.search = new SearchParameter();
this.order = new ArrayList<OrderParameter>();
this.columns = new ArrayList<ColumnParameter>();
}
public Integer getDraw() {
return draw;
}
public void setDraw(Integer draw) {
this.draw = draw;
}
public Integer getStart() {
return start;
}
public void setStart(Integer start) {
this.start = start;
}
public Integer getLength() {
return length;
}
public void setLength(Integer length) {
this.length = length;
}
public SearchParameter getSearch() {
return search;
}
public void setSearch(SearchParameter search) {
this.search = search;
}
public List<OrderParameter> getOrder() {
return order;
}
public void setOrder(List<OrderParameter> order) {
this.order = order;
}
public List<ColumnParameter> getColumns() {
return columns;
}
public void setColumns(List<ColumnParameter> columns) {
this.columns = columns;
}
public List<ColumnParameter> addColumn(ColumnParameter column) {
if(Collections3.isEmpty(columns)){
columns = new ArrayList<ColumnParameter>();
}
columns.add(column);
return columns;
}
}
2、如何输出
public class DataTablesOutput<T> {
/**
* The draw counter that this object is a response to - from the draw
* parameter sent as part of the data request. Note that it is strongly
* recommended for security reasons that you cast this parameter to an
* integer, rather than simply echoing back to the client what it sent in
* the draw parameter, in order to prevent Cross Site Scripting (XSS)
* attacks.
*/
@JsonView(View.class)
private Integer draw;
/**
* Total records, before filtering (i.e. the total number of records in the
* database)
*/
@JsonView(View.class)
private Long recordsTotal;
/**
* Total records, after filtering (i.e. the total number of records after
* filtering has been applied - not just the number of records being
* returned for this page of data).
*/
@JsonView(View.class)
private Long recordsFiltered;
/**
* The data to be displayed in the table. This is an array of data source
* objects, one for each row, which will be used by DataTables. Note that
* this parameter's name can be changed using the ajaxDT option's dataSrc
* property.
*/
@JsonView(View.class)
private List<Map<String, String>> data;
private List<T> sourceData;
/**
* Optional: If an error occurs during the running of the server-side
* processing script, you can inform the user of this error by passing back
* the error message to be displayed using this parameter. Do not include if
* there is no error.
*/
@JsonView(View.class)
private String error;
public interface View {
}
public Integer getDraw() {
return draw;
}
public void setDraw(Integer draw) {
this.draw = draw;
}
public Long getRecordsTotal() {
return recordsTotal;
}
public void setRecordsTotal(Long recordsTotal) {
this.recordsTotal = recordsTotal;
}
public Long getRecordsFiltered() {
return recordsFiltered;
}
public void setRecordsFiltered(Long recordsFiltered) {
this.recordsFiltered = recordsFiltered;
}
public List<Map<String, String>> getData() {
return data;
}
public void setData(List<Map<String, String>> data) {
this.data = data;
}
public List<T> getSourceData() {
return sourceData;
}
public void setSourceData(List<T> sourceData) {
this.sourceData = sourceData;
}
public String getError() {
return error;
}
public void setError(String error) {
this.error = error;
}
}
3、中间过程,通过另外一个查询的参数Searchable,可以百度‘开涛的博客’,将DataTablesInput传来的参数赋值到searchable来,包括分页和排序等,放入Service查询出来之后,再格局DataTablesInput的columns中表单需要展现的字段取出,最后封装到DataTableOutput中去。
分享到:
相关推荐
在Java后端,我们通常使用Servlet或者Spring MVC来接收和解析这些请求。例如,使用`HttpServletRequest`对象,我们可以调用`getParameter()`或`getParameterMap()`方法来获取请求参数。对于多维数组,可能需要使用`...
Thymeleaf也有自己的分页库,如Spring Data JPA的`Pageable`接口,可以结合Thymeleaf表达式进行分页渲染。 在"PaginationDemo"这个示例中,可能包含了如何使用JSP和Java后端实现分页的一个完整例子。可能包括了...
Spring Data JPA提供了对分页的强大支持,可以与各种持久层技术如Hibernate、MyBatis等结合使用。 4. **Java脚本库**:例如,jQuery的Datatables插件,可以在前端实现分页效果,减轻服务器压力。后端只需提供JSON...
嵌入式系统开发_STM32微控制器_ESP8266WiFi模块_心率传感器_加速度计_OLED显示屏_蓝牙40_低功耗设计_实时操作系统_智能手表_多功能健康监测_运动数据记录_
驾校自动化_网页自动化爬虫技术_Python27多线程HTTP请求模拟_龙泉驾校2014版约车系统自动预约助手_通过模拟登录和循环请求实现自动约车功能_支持失败自动递增车号重试_
Linux系统编程_操作系统内核_系统调用_进程线程_信号处理_文件IO_进程间通信_多线程同步_网络编程_UNIX环境编程_中文翻译勘误_错误修正_代码示例优化_技术文档校对_开
wanjunshe_Python-Tensorflow_12888_1745868924470
scratch少儿编程逻辑思维游戏源码-铅笔画.zip
即时通讯应用开发_基于LeanCloud云服务与Android原生开发_集成QQ第三方登录与即时聊天功能的社交应用_实现用户注册登录创建聊天室发送文字消息展示用户信息头像昵称并提供
scratch少儿编程逻辑思维游戏源码-伞兵大乱斗(云变量).zip
scratch少儿编程逻辑思维游戏源码-楼层酷跑.zip
scratch少儿编程逻辑思维游戏源码-零下之寒颤.zip
scratch少儿编程逻辑思维游戏源码-密室逃生.zip
少儿编程scratch项目源代码文件案例素材-爪猫足球.zip
命令行完成git本地仓库创建、将代码提交到暂存区、查看暂存区信息、将代码提交到本地仓库、将本地仓库关联到远程仓库、推送到远程仓库全过程的截图
少儿编程scratch项目源代码文件案例素材-纸.zip
scratch少儿编程逻辑思维游戏源码-日本冒险.zip
scratch少儿编程逻辑思维游戏源码-狼人杀跑酷.zip
scratch少儿编程逻辑思维游戏源码-史莱姆杀手.zip
少儿编程scratch项目源代码文件案例素材-粘粘世界.zip