脚手架控制器
默认的增删改查等操作中有很多事件,多数后事件可以通过 getModelAndView() 后修改 render 的返回结果。
需修改控制器类继承本类,并在控制器类上加上泛型、或定义常量 public static Class _scaffold = ... 代替 scaffold 属性。
同时兼容 Grails2 + BroFramework 4.1 ~ 4.7,但需要在控制器类加上:public static String domainSuffix = "Instance"
| Modifiers | Name | Description |
|---|---|---|
protected static Map<String, Map> |
PERMISSIONS |
|
String |
VIEW_PATH |
默认的视图路径 |
String |
c1 |
|
String |
c2 |
|
protected Class<org.grails.datastore.gorm.GormEntity> |
resource |
控制器关联的 Domain 类 |
protected String |
resourceName |
Domain 类实例化后的名称(用于视图模型命名) |
Class |
scaffold |
| Type | Name and description |
|---|---|
static Object |
allowedMethods |
BizPermissionService |
bizPermissionService |
| Type | Name and description |
|---|---|
protected void |
$afterDelete(T bean)删除操作的后事件 1 |
protected void |
$afterDeleteCommit(T bean)删除操作的后事件 2:删除成功、事务提交后 |
protected void |
$afterList()列表操作的后事件 |
protected void |
$afterRenderCreate(T bean)新建操作的后事件 |
protected void |
$afterRenderEdit(T bean)编辑操作的后事件 |
protected void |
$afterRenderShow(T bean)查看操作的后事件 |
protected Object |
$afterSave(T bean)新建保存操作的后事件 1:保存成功后、事务提交前 |
protected void |
$afterSaveCommit(T bean)新建保存操作的后事件 3:保存成功、事务提交后 |
protected void |
$afterSaveError(T bean)新建保存操作的后事件 2:保存失败、且事务回滚后 |
protected Object |
$afterUpdate(T bean)编辑保存操作的后事件 1:保存成功后、事务提交前 |
protected void |
$afterUpdateCommit(T bean)编辑保存操作的后事件 3:保存成功、事务提交后 |
protected void |
$afterUpdateError(T bean)编辑保存操作的后事件 2:保存失败、且事务回滚后 |
protected Boolean |
$beforeBindAndSave(T bean)新建保存操作的前事件 1 |
protected Boolean |
$beforeBindAndUpdate(T bean)编辑保存操作的前事件 1 |
protected Boolean |
$beforeCreate(T bean)新建操作的前事件 |
protected Boolean |
$beforeDelete(T bean)删除操作的前事件 |
protected Boolean |
$beforeEdit(T bean)编辑操作的前事件 |
protected Boolean |
$beforeList()@see bropen.framework.BroFrameworkInterceptor#fixParamsBizId |
protected Boolean |
$beforeSave(T bean)新建保存操作的前事件 3 |
protected Boolean |
$beforeSaveBind(T bean)新建保存操作的前事件 2 |
protected Boolean |
$beforeShow(T bean)查看操作的前事件 |
protected Boolean |
$beforeUpdate(T bean)编辑保存操作的前事件 3 |
protected Boolean |
$beforeUpdateBind(T bean)编辑保存操作的前事件 2 |
protected String |
$delete(T bean)删除操作 |
protected void |
$respondErrorAjax(T bean, String msg)渲染 AJAX 请求失败操作的结果 |
protected void |
$respondErrorDefault(T bean, String msg)渲染默认的、失败操作的结果 |
protected void |
$respondErrorDelete(T bean, String msg)删除操作失败后,渲染视图(默认重定向到 show) |
protected void |
$respondErrorSave(T bean, String msg)新建保存操作失败后,渲染视图(默认重定向到 show) |
protected void |
$respondErrorUpdate(T bean, String msg)编辑保存操作失败后,渲染视图(默认重定向到 show) |
protected void |
$respondSuccessAjax(T bean, String msg, Object data)渲染 AJAX 请求成功操作的结果 |
protected void |
$respondSuccessCreate(T bean)新建操作成功后,渲染 create 视图 |
protected void |
$respondSuccessDefault(T bean, String msg)渲染默认的、成功操作的结果 |
protected void |
$respondSuccessDelete(T bean, String msg)删除操作成功后,渲染结果(默认弹出提示消息、并关闭当前窗口) |
protected void |
$respondSuccessEdit(T bean)编辑操作成功后,渲染 edit 视图 |
protected void |
$respondSuccessSave(T bean, String msg)新建保存操作成功后,渲染视图(默认重定向到 show) |
protected void |
$respondSuccessShow(T bean)查看操作成功后,渲染 show 视图 |
protected void |
$respondSuccessUpdate(T bean, String msg)编辑保存操作成功后,渲染视图(默认重定向到 show) |
protected Map |
buildViewModel(T bean) |
Object |
create()新建(起草、创建)操作 |
Object |
delete()删除操作 |
Object |
edit()编辑操作 |
Object |
export()导出文档到 Word |
static org.grails.datastore.gorm.GormEntity |
findByModel(String controllerName, Map model)从渲染视图时的 model 中查找 Domain 类的实例对象 |
protected Long |
getBizId()如果是业务文档控制器,获得业务定义 ID |
protected Class |
getListClass(String actionName)@see DatatableController#getListClass |
protected Map |
getListModel()渲染传统的列表视图时,获得列表数据 |
protected String |
getListReferenceViewPath(String view = null)获得关联文档的视图路径 |
Map |
getPermissions()业务文档的 CRUD 操作鉴权 |
protected String |
getViewPath()获得视图路径 |
Object |
index()默认操作,自动重定向到 list |
Object |
list()列表操作 |
Object |
listReference()获得关联文档列表,通过 o.selectReference 触发 |
protected String |
m(Map message)可在控制器中调用、并支持静态编译的 g.message 标签的别名 |
boolean |
respondError(T bean, String msg)在脚手架操作中调用、渲染失败操作的结果,如 save、update 等 |
boolean |
respondSuccess(T bean, String msg, Object data = null)在脚手架操作中调用、渲染成功操作的结果,如 create、save 等 |
Object |
save()新建保存操作 |
Object |
show()查看操作 |
Object |
update()编辑保存操作 |
| Methods inherited from class | Name |
|---|---|
class DatatableController |
$afterListDataTable, exportAttachments, exportDataTable, getDataTable, getDocumentPermissionHql, getExportDataTableColumns, getExportDataTableColumnsChildren, getListClass, getListMapping, handleGetDataTableSearchParams, listDataTable, renderDataTable |
class Object |
Object#wait(long, int), Object#wait(long), Object#wait(), Object#equals(Object), Object#toString(), Object#hashCode(), Object#getClass(), Object#notify(), Object#notifyAll() |
默认的视图路径
如 foo.bar.FoobarAbc,默认为 /foo/bar/FoobarAbc。
可以在控制器中添加带下划线的同名属性进行覆盖,如:
public static String _VIEW_PATH = "/abc123"
控制器关联的 Domain 类
Domain 类实例化后的名称(用于视图模型命名)
如 foo.bar.FoobarAbc,默认为 foobarAbc。
可以在控制器中添加 public static String domainSuffix = "Instance" 以向下兼容,此时为 foobarAbcInstance。
删除操作的后事件 1
bean - 根据 params.id 获得的 domain 对象删除操作的后事件 2:删除成功、事务提交后
bean - 根据 params.id 获得的、已被删除的 domain 对象列表操作的后事件
新建操作的后事件
bean - 根据 params.id 获得的 domain 对象编辑操作的后事件
bean - 根据 params.id 获得的 domain 对象查看操作的后事件
bean - 根据 params.id 获得的 domain 对象新建保存操作的后事件 1:保存成功后、事务提交前
bean - 根据 params.id 获得的 domain 对象新建保存操作的后事件 3:保存成功、事务提交后
bean - 根据 params.id 获得的 domain 对象新建保存操作的后事件 2:保存失败、且事务回滚后
bean - 根据 params.id 获得的 domain 对象编辑保存操作的后事件 1:保存成功后、事务提交前
bean - 根据 params.id 获得的 domain 对象编辑保存操作的后事件 3:保存成功、事务提交后
bean - 根据 params.id 获得的 domain 对象编辑保存操作的后事件 2:保存失败、且事务回滚后
bean - 根据 params.id 获得的 domain 对象新建保存操作的前事件 1
bean - 根据 params.id 获得的 domain 对象编辑保存操作的前事件 1
bean - 根据 params.id 获得的 domain 对象新建操作的前事件
bean - 根据 params.id 获得的 domain 对象删除操作的前事件
bean - 根据 params.id 获得的 domain 对象编辑操作的前事件
bean - 根据 params.id 获得的 domain 对象
新建保存操作的前事件 3
bean - 根据 params.id 获得的 domain 对象新建保存操作的前事件 2
bean - 根据 params.id 获得的 domain 对象查看操作的前事件
bean - 根据 params.id 获得的 domain 对象编辑保存操作的前事件 3
bean - 根据 params.id 获得的 domain 对象编辑保存操作的前事件 2
bean - 根据 params.id 获得的 domain 对象删除操作
默认调用 bean.delete(flush:true),并返回 null。
bean - 根据 params.id 获得的 domain 对象渲染 AJAX 请求失败操作的结果
bean - 操作的对象,其 ID 会填如 Response#id。msg - 失败的消息渲染默认的、失败操作的结果
默认重定向到 show 操作,此时 model 参数无效。
bean - 操作的对象msg - 失败的消息删除操作失败后,渲染视图(默认重定向到 show)
bean - 根据 params.id 获得的 domain 对象msg - 删除失败的消息新建保存操作失败后,渲染视图(默认重定向到 show)
bean - 根据 params.id 获得的 domain 对象msg - 保存失败的消息编辑保存操作失败后,渲染视图(默认重定向到 show)
bean - 根据 params.id 获得的 domain 对象msg - 保存失败的消息渲染 AJAX 请求成功操作的结果
bean - 操作的对象msg - 成功的消息data - 返回得前端的数据对象新建操作成功后,渲染 create 视图
bean - 根据 params 新建的对象,未持久化渲染默认的、成功操作的结果
默认重定向到 show 操作。
bean - 操作的对象msg - 成功的消息删除操作成功后,渲染结果(默认弹出提示消息、并关闭当前窗口)
bean - 根据 params.id 获得的 domain 对象msg - 删除成功的消息编辑操作成功后,渲染 edit 视图
bean - 根据 params.id 获得的 domain 对象新建保存操作成功后,渲染视图(默认重定向到 show)
bean - 根据 params.id 获得的 domain 对象msg - 保存成功的消息查看操作成功后,渲染 show 视图
bean - 根据 params.id 获得的 domain 对象编辑保存操作成功后,渲染视图(默认重定向到 show)
bean - 根据 params.id 获得的 domain 对象msg - 保存成功的消息新建(起草、创建)操作
包括 $beforeCreate、$afterRenderCreate 事件。
删除操作
包括 $beforeDelete、$afterDelete、$afterDeleteCommit 事件。
编辑操作
包括 $beforeEdit、$afterRenderEdit 事件。
导出文档到 Word
从渲染视图时的 model 中查找 Domain 类的实例对象
controllerName - 控制器名称model - 渲染视图时设置的 model 对象;如果为 null,则尝试自动查找;如果是业务文档控制器,获得业务定义 ID
渲染传统的列表视图时,获得列表数据
获得关联文档的视图路径
BizDocumentController.VIEW_PATH + listReferenceview - 视图名称,如果存在,则返回 getViewPath() + view业务文档的 CRUD 操作鉴权
如果文档类有业务文档标签 Document,则自动对 list、show、create/save、edit/update、delete 鉴权。
如果还需要对其他操作鉴权,或者默认的鉴权规则无法满足要求,可以覆盖本方法、调用 super.getPermissions() 后进行扩展。
获得视图路径
默认为通过 _VIEW_PATH、或 Domain 类全名计算出来的 VIEW_PATH。
默认操作,自动重定向到 list
列表操作
包括 $beforeList、$afterList 事件。
获得关联文档列表,通过 o.selectReference 触发
可在控制器中调用、并支持静态编译的 g.message 标签的别名
在脚手架操作中调用、渲染失败操作的结果,如 save、update 等
具体实现参考各 $respondErrorXxxx 方法。
bean - 操作失败的对象msg - 渲染到 flash.message 或者 ajax 响应里的操作结果消息。在脚手架操作中调用、渲染成功操作的结果,如 create、save 等
具体实现参考各 $respondSuccessXxxx 方法。
bean - 操作的对象msg - 渲染到 flash.message 或者 ajax 响应里的操作结果消息;data - 渲染到 ajax 响应里的数据。新建保存操作
包括 $beforeBindAndSave、$beforeSaveBind、$beforeSave、$afterSave、$afterSaveError、$afterSaveCommit 事件。
其中 $beforeSave 事件如果返回 false,则会自动进行数据库事务回滚。
查看操作
包括 $beforeShow、$afterRenderShow 事件。
编辑保存操作
包括 $beforeBindAndUpdate、$beforeUpdateBind、$beforeUpdate、$afterUpdate、$afterUpdateError、$afterUpdateCommit。
其中 $beforeUpdate 事件如果返回 false,则会自动进行数据库事务回滚。