scree 中的几个内置对象
米景辉
2023-12-01
· screens是一个org.ofbiz.widget.screen.ScreenRenderer对象
· globalContext是一个org.ofbiz.base.util.collections.MapStack对象
· nullField是一个org.ofbiz.entity.GenericEntity$NullField对象
· availableLocales是一个java.util.List对象
· locale 是一个java.util.Locale对象
· delegator是一个org.ofbiz.entity.GenericDelegator对象
· dispatcher是一个org.ofbiz.service.GenericDispatcher对象
· security是一个org.ofbiz.security.OFBizSecurity对象
· userLogin是一个org.ofbiz.entity.GenericValue对象
· parameters是一个java.util.Map对象
这是在ScreenWidgetViewHandler的render方法中的
screens.populateContextForRequest(request, response, servletContext);最后进入
public static void populateContextForRequest(MapStack<String> context, ScreenRenderer screens, HttpServletRequest request, HttpServletResponse response, ServletContext servletContext) {
其中
parameters字段是通过代码
Map<String, Object> parameterMap = UtilHttp.getCombinedMap(request, attrNamesToSkip);初始化的。
进入查看
public static Map<String, Object> getCombinedMap(HttpServletRequest request, Set<? extends String> namesToSkip) {
FastMap<String, Object> combinedMap = FastMap.newInstance();
combinedMap.putAll(getParameterMap(request)); // parameters override nothing
combinedMap.putAll(getServletContextMap(request, namesToSkip)); // bottom level application attributes
combinedMap.putAll(getSessionMap(request, namesToSkip)); // session overrides application
combinedMap.putAll(getAttributeMap(request)); // attributes trump them all
return combinedMap;
}
可以发现parameters包含了请求参数
servlet上下文(包括context-param)
sessionAttributeMap
requestAttributeMap