一些自动注入到控制器中的方法,参考 ControllersApi。 其中多数方法需要 BroFramework 甚至 BroBPM 的支持。
Type | Name and description |
---|---|
void |
bootStrapInit() |
List |
deleteFailedAttachments(Object controller, Object bean) 当bean保存失败时,删除已保存的附件 |
Boolean |
isAjax(Object controller) 判断是否是ajax请求,如果参数中有jsonp,则也任务是ajax请求 |
void |
nocache(Object controller) 设置response头,不允许浏览器缓存 |
void |
paginateParams(Object controller, Integer defaultMax = null) 处理params中的翻页参数,以免异常 |
void |
renderAjaxError(Object controller, Object bean, String jsonp) 根据Bean的errors属性,渲染AJAX错误消息 |
void |
renderAjaxMessage(Object controller, Map message, String jsonp) 渲染AJAX消息 |
void |
renderAjaxMessage(Object controller, String message, String jsonp) 渲染AJAX消息 |
void |
renderDenied(Object controller, Object message = null) 渲染拒绝访问界面 |
void |
renderError(Object controller, Object message) 渲染错误界面 |
void |
renderExport(Object controller, Map modelAndView) 渲染导出页面 |
void |
renderMessage(Object controller, Object message) 渲染提醒界面 |
void |
renderText(Object controller, Object message) 渲染纯文本消息 |
void |
renderWarning(Object controller, Object message) 渲染警告界面 |
Boolean |
saveReferences(Object controller, Object bean) 保存/更新提交的关联对象(xxx.xxx)的数据。 |
List |
updateAttachments(Object controller, Object bean) 保存请求中的附件,并返回附件对象列表 |
Object |
withInstance(Object controller, Closure c) 简化控制器里的操作代码,将最常用的判断放到本方法中。 |
Methods inherited from class | Name |
---|---|
class Object |
Object#wait(long), Object#wait(long, int), Object#wait(), Object#equals(Object), Object#toString(), Object#hashCode(), Object#getClass(), Object#notify(), Object#notifyAll() |
当bean保存失败时,删除已保存的附件
判断是否是ajax请求,如果参数中有jsonp,则也任务是ajax请求
设置response头,不允许浏览器缓存
处理params中的翻页参数,以免异常
根据Bean的errors属性,渲染AJAX错误消息
渲染AJAX消息
message
- 包含消息的Map,将转成JSON。如 [message:"XXXX", ...]
渲染AJAX消息
message
- 已格式化成JSON的消息渲染拒绝访问界面
渲染错误界面
渲染导出页面
可以通过设置 params._export_format 设置导出格式;通过设置 params._export_filenmae 设置导出文件名。
modelAndView
- 包含view、model属性的Map(同控制器中render的参数)。 其中view参数会根据导出格式,自动加上扩展名,如 export.doc(对应到export.doc.gsp文件)。 默认格式为doc,即默认会重定向到 export.doc.gsp;如果对应的gsp文件不存在,则会出404错误。
渲染提醒界面
渲染纯文本消息
渲染警告界面
保存/更新提交的关联对象(xxx.xxx)的数据。
如:Domain类 A 关联Domain类 B,且没有任何belong的关系,表单A上包含 B.name,提交时如果 B 实例还不存在,保存时可能会导致异常:
“object references an unsaved transient instance - save the transient instance before flushing B”
一般在控制器的save、update操作的 bean.save 前调用。
controller
- 控制器bean
- Domain实体Bean保存请求中的附件,并返回附件对象列表
简化控制器里的操作代码,将最常用的判断放到本方法中。
注:控制器中必须定义 scaffold、c1、c2。
通过控制器模板,在 show、edit、save、update、delete 等操作中调用。
c
- 如果需要启用事务支持,则应为有两个参数的回调闭包,第一个参数为根据params.id拿到的bean,第2个参数为withTransaction后的status参数。 save、update、delete操作必须启用事务,因此此时回调闭包必须为两个参数,如果参数数量不正确,会抛出 No signature of method 的异常。 简单的说,如果是save、update、delete操作,或者是别的希望启用事务支持的操作,则传个带两个参数的回调闭包进来;否则传一个参数的回调闭包。