ofbiz——事件和服务中有哪些隐藏对象
来源:互联网 发布:visio 2016 for mac 编辑:程序博客网 时间:2024/06/05 14:48
总结一些常见的内置对象。掌握ftl,xml,groovy,java文件里哪些内置对象可以直接使用。
因为之前开发过程对这方面知识掌握不是很透彻,很多时候都靠不停的调试才获取到正确的参数。
事件
OFBiz框架为我们在request中放置了一些作为属性的有用对象。其它的有用对象我们可在Session中得到。一旦在需要的地方提取取来,我们就可在Java方法中使用这些可用的对象。
请求作为一个参数传递给Java事件(或者groovy事件)。使用标准的方式可从request中获取到session:
HttpSession session = request.getSession();
· availableLocales对象可如下构造:
List UtlavailableLocales = UtilMisc.availableLocales();
· locale对象可以如下获取:
Locale locale = UtilHttp.getLocale(request);
· delegator对象可以如下获得:
GenericDelegator delegator = (GenericDelegator)request.getAttribute("delegator");
· dispatcher对象可以如下获得:
LocalDispatcher dispatcher = (LocalDispatcher)request.getAttribute("dispatcher");
· security对象的获得:
Security security = (Security)request.getAttribute("security");
· userLogin对象的获得:
GenericValue userLogin = (GenericValue)session.getAttribute("userLogin");
请求作为一个参数传递给Java事件(或者groovy事件)。使用标准的方式可从request中获取到session:
HttpSession session = request.getSession();
· availableLocales对象可如下构造:
List UtlavailableLocales = UtilMisc.availableLocales();
· locale对象可以如下获取:
Locale locale = UtilHttp.getLocale(request);
· delegator对象可以如下获得:
GenericDelegator delegator = (GenericDelegator)request.getAttribute("delegator");
· dispatcher对象可以如下获得:
LocalDispatcher dispatcher = (LocalDispatcher)request.getAttribute("dispatcher");
· security对象的获得:
Security security = (Security)request.getAttribute("security");
· userLogin对象的获得:
GenericValue userLogin = (GenericValue)session.getAttribute("userLogin");
服务
正如GenericValue类型的userLogin对象和Locale类型的locale对象作为属性被添加到java事件的request中,当服务这样调用时,二者都是自动添加到上下文的map中。
服务一般会传2个参数DispatchContext dctx, Map<String, Object> context。
第一个参数DispatchContext,包含剩下的需要访问数据库或者调用其他服务的工具。
从Java代码中我们可以访问下面对象,如下所示:
---------------------------------------------------
GenericValue userLogin = (GenericValue)context.get("userLogin");
Locale locale = (Locale)context.get("locale");
GenericDelegator delegator = dctx.getDelegator();
LocalDispatcher dispatcher = dctx.getDispatcher();
Security security = dctx.getSecurity();
---------------------------------------------------
一个全部可用的对象列表来自DispatchContext请参看org.ofbiz.service.DispatchContext的代码。
服务引擎不依赖HTTPServletRequest和HTTPServletResponse对象。因为这样我们可以在web环境外面调用服务并且它们可以被远程调用或者安排“离线”运行。
第一个参数DispatchContext,包含剩下的需要访问数据库或者调用其他服务的工具。
从Java代码中我们可以访问下面对象,如下所示:
---------------------------------------------------
GenericValue userLogin = (GenericValue)context.get("userLogin");
Locale locale = (Locale)context.get("locale");
GenericDelegator delegator = dctx.getDelegator();
LocalDispatcher dispatcher = dctx.getDispatcher();
Security security = dctx.getSecurity();
---------------------------------------------------
一个全部可用的对象列表来自DispatchContext请参看org.ofbiz.service.DispatchContext的代码。
服务引擎不依赖HTTPServletRequest和HTTPServletResponse对象。因为这样我们可以在web环境外面调用服务并且它们可以被远程调用或者安排“离线”运行。
ftl,xml文件中可以使用parameters对象获取请求参数
[Screen.xml]文件中的隐藏对象(自变量)
<!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->
[v16.11]
在[org.apache.ofbiz.widget.renderer.macro.MacroScreenViewHandler.render()]内调用下面方法初始化执行上下文
org.apache.ofbiz.widget.screen.ScreenRenderer.populateContextForRequest()
>>>在这里调用了[org.apache.ofbiz.widget.screen.ScreenRenderer.populateBasicContext()]
application: org.apache.catalina.core.ApplicationContextFacade(tomcat-catalina-8.0.42.jar)
Application: [request.Attribute.ftlServletContext] freemarker.ext.servlet.ServletContextHashModel(freemarker-2.3.24-incubating.jar)
autoUserLogin: 登录后的用户对象, [request.Attribute.autoUserLogin] org.apache.ofbiz.entity.GenericValue
checkLoginUrl: 登录检查的相对地址, [LoginWorker.makeLoginUrl(request)]
org.apache.ofbiz.base.util.StringUtil.StringWrapper, 如--[/checkLogin/FindDesignGuageMonitor]
contextRoot: 访问的当前模块物理文件根目录, [request.Attribute._CONTEXT_ROOT_] 如--[/Users/apple/workings/workspace/ofbiz/hot-deploy/workbench/webapp/workbench/]
controlPath: 访问的当前模块请求uri前缀, [request.Attribute._CONTROL_PATH_] 如--[/workbench/control]
errorMessageList: 错误型消息载体, [request.Attribute.errorMessageList]和[request.Attribute._ERROR_MESSAGE_]和[request.Attribute._ERROR_MESSAGE_LIST_]
java.util.LinkedList(JAVA-JDK:rt.jar)
eventMessageList: 事件型消息载体, [request.Attribute.eventMessageList]和[request.Attribute._EVENT_MESSAGE_]和[request.Attribute._EVENT_MESSAGE_LIST_]
java.util.LinkedList(JAVA-JDK:rt.jar)
externalLoginKey: 跨模块登录的会话Key, [LoginWorker.getExternalLoginKey(request)] 如--[ELa39cea9e-b198-4ba4-b941-92d6fafbffed]
externalKeyParam: 跨模块登录的参数, 如--[&externalLoginKey=ELa39cea9e-b198-4ba4-b941-92d6fafbffed] java.lang.String(JAVA-JDK:rt.jar)
https: 是否开启了安全请求, [servletContext.Attribute.https] java.lang.String(JAVA-JDK:rt.jar)
isError: 是否发生错误, [errorMessageList.size() > 0] 请求内是否已经包含错误消息了, java.lang.Boolean(JAVA-JDK:rt.jar)
JspTaglibs: jsp标签支持库, [new TaglibFactory(servletContext)] freemarker.ext.jsp.TaglibFactory(freemarker-2.3.24-incubating.jar)
javaScriptEnabled: 启用页面js, [UtilHttp.isJavaScriptEnabled(request)] java.lang.Boolean(JAVA-JDK:rt.jar)
partyGroup: 登录后后的组织对象, [request.Attribute.partyGroup] org.apache.ofbiz.entity.GenericValue
person: 登录后后的人员对象, [request.Attribute.person] org.apache.ofbiz.entity.GenericValue
request: RequestFacade[外部的]
Request: [context.requestAttributes] freemarker.ext.servlet.HttpRequestHashModel(freemarker-2.3.24-incubating.jar)
requestAttributes: 请求属性, 请求[new HttpRequestHashModel(request, FreeMarkerWorker.getDefaultOfbizWrapper())]
freemarker.ext.servlet.HttpRequestHashModel(freemarker-2.3.24-incubating.jar)
requestParameters: 请求携带的url参数集, [UtilHttp.getParameterMap(request)] java.util.HashMap(JAVA-JDK:rt.jar)
response: 请求响应对象, org.apache.catalina.connector.ResponseFacade(tomcat-catalina-8.0.42.jar)
rootDir: 访问的模块在服务端的根目录, 如--[/Users/apple/workings/workspace/ofbiz/hot-deploy/workbench/webapp/workbench/]
serverRoot: 请求主域名, [request.Attribute._SERVER_ROOT_URL_] 如--[http://localhost:8080]
session: 会话对象, org.apache.catalina.session.StandardSessionFacade(tomcat-catalina-8.0.42.jar)
sessionAttributes: 会话属性, [new HttpSessionHashModel(session, FreeMarkerWorker.getDefaultOfbizWrapper())]
freemarker.ext.servlet.HttpSessionHashModel(freemarker-2.3.24-incubating.jar)
timeZone: 时区对象, [UtilHttp.getTimeZone(request)] sun.util.calendar.ZoneInfo (JAVA-JDK:rt.jar)
webappName: , 应用模块, [session.Attribute._WEBAPP_NAME_?:"root"] 如--[workbench](模块名称)
webSiteId: 站点标识, 配置在模块内(web.xml)文件内[WebSiteWorker.getWebSiteId(request)] 如--[workbenchSite] java.lang.String(JAVA-JDK:rt.jar)
org.apache.ofbiz.widget.screen.ScreenRenderer.populateBasicContext()
delegator: 数据库代理器, [request.Attribute.delegator] org.apache.ofbiz.entity.GenericDelegator
dispatcher: 服务调度器, [request.Attribute.dispatcher] org.apache.ofbiz.service.GenericDispatcherFactory.GenericDispatcher
globalContext: 全局上下文, [context.standAloneStack()] org.apache.ofbiz.base.util.collections.MapStack
locale: 国际化对象, [UtilHttp.getLocale(request), userLogin)] java.util.Locale(JAVA-JDK:rt.jar)
nullField: 空对象, [org.apache.ofbiz.entity.GenericEntity.NullField]
nowTimestamp: 当前时间戳, [org.apache.ofbiz.base.util.UtilDateTime.nowTimestamp()] java.sql.Timestamp(JAVA-JDK:rt.jar)
parameters: 客户端请求携带所有参数, [UtilHttp.getCombinedMap(request, attrNamesToSkip)] java.util.HashMap(JAVA-JDK:rt.jar)
screens: 当前待渲染屏幕的对象, org.apache.ofbiz.widget.renderer.ScreenRenderer
security: 安全权限对象, [request.Attribute.security] org.apache.ofbiz.security.SecurityFactory.OFBizSecurity
userLogin: 当前登录用户的对象, [session.Attribute.userLogin] org.apache.ofbiz.entity.GenericValue
userPreferences: 用户个性化配置载体对象, java.util.LinkedHashMap(JAVA-JDK:rt.jar)
Screen运行时内建
formStringRenderer: 屏幕渲染器, org.apache.ofbiz.widget.renderer.macro.MacroFormRenderer
headerItem: 页头-子菜单标识(FindDesignGuageMonitor)
headerTitle: 页头-页面标题标识
menuStringRenderer: 菜单渲染器, org.apache.ofbiz.widget.renderer.macro.MacroMenuRenderer
p_Ctx: 调用分页服务时, 传入的查询条件的Map集合
renderFormSeqNumber: 渲染[form]时, 页面已有[form]顺序号
simpleEncoder: 页面内容编码器, org.apache.ofbiz.base.util.UtilCodec.HtmlEncoder
treeStringRenderer: 树渲染器, org.apache.ofbiz.widget.renderer.macro.MacroTreeRenderer
阅读全文
0 0
- ofbiz——事件和服务中有哪些隐藏对象
- ofbiz 的screen中有哪些变量
- JS中有哪些事件
- JavaScript 函数用作对象有哪些隐藏问题?
- JSP中有哪些内置对象?
- 服务器开发—谈谈游戏服务器有哪些服务
- H5面试——JS内置对象有哪些
- 包贝尔婚礼事件中,有哪些嘈可以吐?
- SEO服务方式有哪些?
- 如何查看数据文件中有哪些数据库对象占用?
- JavaScript中访问节点对象的方法有哪些?
- jsp中常用的内置对象有哪些?作用是什么?
- Java中可作为gc root 的对象有哪些?
- 木马有哪些隐藏的地方?
- 创建对象有哪些方法
- JavaScript常用对象有哪些
- GC Root 对象有哪些
- js 常用对象有哪些
- linux Centos或者redhat安装MariaDB 和spring boot配置使用mariaDb
- Linux命令行模式和图形界面切换
- 在Spring Boot中使用@Scheduled实现定时任务
- 1900页Python系列PPT分享三:选择与循环结构语法及案例(96页)
- SQL--JOIN的一些总结
- ofbiz——事件和服务中有哪些隐藏对象
- Github使用之git回退到某个历史版本
- 关于如何理解递归的两则小例子
- 其他题目---设计一个没有扩容负担的堆结构
- xz: linux-4.13.10.tar.xz: Unexpected end of input
- Fibonacci数列第n项的第7种计算方法:Python列表
- 跟我学习dubbo-简介(1)
- 安卓VideoView(二)
- mysql中or和in的效率问题