@CompileStatic@groovy.transform.CompileStatic abstract class DatatableController extends Object
| Type | Name and description |
|---|---|
protected void |
$afterListDataTable(Map result)获得数据列表后、渲染结果前的事件 |
Object |
exportAttachments()根据当前列表的查询条件,导出文档中的所有附件 |
Object |
exportDataTable()根据当前列表的排序和查询条件,导出列表为 Excel |
protected Map |
getDataTable(List<Map> listMapping, Map params, Map options)获得基于 DataTable 的列表视图的返回结果 |
protected String |
getDocumentPermissionHql(Class clazz, String alias, String prefix)获得业务文档鉴权的 hql 部分 |
protected List<Map> |
getExportDataTableColumns()获得 exportDataTable 要导出的列定义,供用户选择 |
protected List<Map> |
getExportDataTableColumnsChildren()获得 exportDataTable 要导出的子文档的列定义,供用户选择 |
protected Class |
getListClass(String actionName)获得列表要查询的 Domain 类 |
protected List<Map> |
getListMapping(Map params, String viewPath) |
protected Map |
handleGetDataTableSearchParams(Map params)合并查询参数:将 search.precondition 拼接到 search.where 中 |
protected boolean |
listDataTable(String viewPath)渲染 DataTable 的列表视图 |
protected void |
renderDataTable(Map params, Map options, String viewPath)@see bropen.framework.taglib.ListFieldsTagLib#initListMapping |
| Methods inherited from class | Name |
|---|---|
class Object |
Object#wait(long, int), Object#wait(long), Object#wait(), Object#equals(Object), Object#toString(), Object#hashCode(), Object#getClass(), Object#notify(), Object#notifyAll() |
获得数据列表后、渲染结果前的事件
可以通过重载本方法,往 result 里传些自定义的数据,然后在前台使用 o.dataTable.on 绑定 draw 事件、获得 json 数据。
再例如,可以在 data 列表添加一行合计数据,前台自动渲染。
result - 包括 [data: list, recordsFiltered: filtered, recordsTotal: total] 的列表数据根据当前列表的查询条件,导出文档中的所有附件
downloadName - 下载的压缩包名称,会自动添加时间后缀和 zip 扩展名folderField - 用于生成压缩包中文档子文件夹名称的属性名,如 title,默认为 id根据当前列表的排序和查询条件,导出列表为 Excel
获得基于 DataTable 的列表视图的返回结果
options.where - 补充的查询条件,如鉴权条件等获得业务文档鉴权的 hql 部分
clazz - 业务文档的 Domain 类,null 则从 scaffold 取alias - 表的别名,如 dprefix - 前缀,如 and获得 exportDataTable 要导出的列定义,供用户选择
如下面的 Map 列表:
name : 字段名称;
title: 字段显示名;
type : 字段 java 类型,如 java.lang.String
获得 exportDataTable 要导出的子文档的列定义,供用户选择
需要返回形如如下面的 Map 列表:
children : 父文档中关联子文档的属性名称,如 children;
childrenTitle: 父文档中关联子文档的属性显示名;
clazz : 子文档的 Domain 类名,如 "bropen.bpmlite.DocumentChild";
parent : 子文档中关联父文档的属性名称,如 parent;
name : 子文档的字段名称;
title : 子文档的字段显示名;
type : 子文档的字段 java 类型全名,如 "java.lang.String"]
获得列表要查询的 Domain 类
比如脚手架控制器模板 ScaffoldController 中,固定返回为控制器类的泛型或 _scaffold 属性。
actionName - 当前操作名称合并查询参数:将 search.precondition 拼接到 search.where 中
渲染 DataTable 的列表视图
通常被 list 操作调用。
前台调用参见 _datatables.js 方法 getData。
params.draw - 如果为空,则渲染视图;params.ns - 列表定义(listFields)的命名空间params.offset - 翻页参数:起始序号params.max - 翻页参数:每页最多显示条数params.all - 翻页参数:所有数据(忽略 max)params.sort.xxx - 排序参数,可以有多个,如 sort.creator_name = asc params.search.where - 查询条件,如 {"_creator.name":{"~":"x"}} params.search.precondition - 前置查询条件,会限制返回结果中的 total,并且自动拼接到 search.where 作为查询条件的一部分params.search.raw - 对于 like 表达式,是否需要进行语法分析(比如括号、引号、加减号等分隔符);如果为 true 则无需进行分析params.listMapping - 列表定义(JSON 格式,简化了的 listFields)params.cacheOnly - 导出列表(exportDataTable)或导出附件(exportAttachments)等操作时,
加上本参数,获得所有数据后,直接将数据缓存下来,并返回数据缓存的 key;此时 all 通常为 true。viewPath - 渲染列表视图的 gsp 文件路径,常见如 VIEW_PATH + "list"。