一般动作
在 Grails 中,控制器中会自动编译、或者动态注入一些预定以的属性和方法,常用的如 params、request、response 等,这些属性和方法极大的提升了开发效率。
在 BroFramework 中,我们同样定义了一批开箱即用的属性和API。
当前请求的员工对象(bropen.framework.core.osm.Employee),进而可以获得对应的用户等。
如果当前请求用户不是员工(如管理员用户 admin),则返回一个包含 name 和 email 属性的、未保存的员工实例,并且 email 属性固定为系统参数中的 bropen.framework.mail.from.email 值。
例如:
员工服务(bropen.framework.core.OsmEmployeeService)对象,包含一些员工查询与操作的API。例如:
机构服务(bropen.framework.core.OsmOrganizationService)对象,包含一些机构查询与操作的API。例如:
系统参数管理服务(bropen.framework.core.SettingService)对象,包含存取参数的API。例如:
附件管理服务(bropen.framework.core.AttachmentService)对象,包含存取附件的API,下面的 updateAttachment 等附件方法都是调用本属性中的API实现的。例如:
流程引擎服务(bropen.bpm.ProcessEngineService)对象,包含几乎所有流程引擎相关的API。如:
处理 params 中的翻页参数,主要用来处理 max;此外,同时兼容 jqGrid 的 page 参数(将其转换为 offset 参数)。
一般在脚手架模板生成的 list 操作中自动调用本方法。
设置 response 头(Cache-Control、Expires等),不允许浏览器缓存。
在 renderExport 方法中也会自动调用本方法。
判断是否是ajax请求,如果参数中有jsonp,则也认为是ajax请求(跨域的json调用)。例如:
渲染AJAX消息,参数 message 为包含消息的Map,将转成JSON返回给浏览器,或者已转成JSON的字符串直接返回。如 [message:"XXXX", ...]。例如:
渲染套打视图,参数 modelAndView 为包含view、model属性的Map,和方法 render 的参数一致。
在脚手架模板生成的 export 操作中自动调用本方法渲染套打视图,套打功能的详细开发过程可以参见开发手册。
本方法主要根据 params._export_format 或 response.format 参数设置渲染的 contentType(如 doc -> application/msword),并调用相关的服务,渲染出对应格式的文件给浏览器下载或打开。
例如:
根据 Bean 的 errors 属性,渲染 AJAX 错误消息,渲染结果为 json 格式的 Map 对象,且每条错误之间用回车符 \n 分隔,如:
将一段简单的文本消息放在一个包含样式的消息页面中渲染,用于提醒用户,以提供更好用户体验。
可以通过链接查看渲染效果:/Foobar/error/message?message=Hello+World
可以通过定制 grails-app/views/bropen/framework/core/Error/ 下的视图文件来个性化提醒界面。
将文本消息渲染成一个包含样式的错误页面。
查看渲染效果:/Foobar/error/error?message=Hello+World
将文本消息渲染成一个包含样式的警告页面。
查看渲染效果:/Foobar/error/warning?message=Hello+World
将文本消息渲染成一个包含样式的拒绝访问页面。
查看渲染效果:/Foobar/error/denied?message=Hello+World
直接渲染文本消息,注意 ContextType 将会被设置为 text/plain。
保存(更新)客户端提交的所有动态表的数据。
在脚手器模板生成的 save、update 操作中会调用该方法,动态表的使用和参数说明详见开发手册与 bropen.toolkit.utils.grails.BeanUtils.updateDynamicTables 的 API 手册。
保存(更新)客户端提交的某张动态表的数据。参数说明详见 BeanUtils 的同名方法。
保存(更新)提交的关联对象(xxx.yyyy)的数据,一般在脚手架模板生成的 save 和 update 方法中被调用。
详细解释见 ControllersApiService 中的同名方法。
保存请求对象(request)中的附件,并返回附件(bropen.framework.core.Attachment)对象列表。
一般在脚手架模板生成的 save 和 update 方法中,当 bean 被保存成功后调用。
当bean保存失败时,删除已保存的附件。一般在 withInstance 中自动调用。
简化控制器里的操作代码,将最常用的判断放到本方法中,如判断 params.id 代表的 bean 是否存在、保存失败时自动回滚并删除本次上传的附件等。
在脚手架模板生成的多个操作中都会调用本方法。
详细说明参见 ControllersApiService 中的同名方法。