水神骑士联盟吧 关注:4贴子:334
  • 3回复贴,共1

关于ognl表达式取值规则

只看楼主收藏回复

action的全局属性会在执行action方法前被interceptor(拦截器)放入request域中;
actionContext.getContextMap().put(key,value) ;//会放进ognlContext的非跟元素集合中(map栈)和 request的域中!


IP属地:河北1楼2016-05-12 12:38回复
    push :valueStack.push(new Person("ljt",14,true)) ; (valueStack.getRoot())root.push ; root.set root.add ....//这几种情况存放在compoundRoot(list栈)中
    页面ognl取person的name属性值为:"name"
    action:action对象被存储在值栈中
    action的全局变量 private Person person ;会在执行action方法前被interceptor(拦截器)放入request域中
    在页面ognl取person的name属性值为:
    "person.name" "#request.person.name" ${requestScope.person.name}
    map:valueStack.set("map_person" new Person("ljz",12,true)) ;//存放在compoundRoot(list栈)中的map集合中
    页面ognl取person的name属性值为:"map_person.name"
    如果取值语句相同优先级为在对象属性优先的情况下,按照list栈索引#排序这里的索引排序为push,map,action但优先级为push->action->map


    IP属地:河北2楼2016-05-12 12:42
    回复
      2025-06-06 13:46:07
      广告
      actionContext.getSession().put(key,value); (Map(String,Object)actionContext.get("session")).put(key,value);//两中方式相同,会放进map栈的以session为key的Map中
      页面的取值语句为:"#session.key" ${sessionScope.key}
      actionContext.getApplication().put(key,value); (Map(String,Object)actionContext.get("application")).put(key,value);//两中方式相同,会放进map栈的以application为key的Map中
      页面的取值语句为:"#application.key" ${applicationScope.key}
      actionContext.getContextMap().put(key,value) ;//会放进ognlContext的非跟元素集合中(map栈)和 request的域中
      页面的取值语句为:
      ognl:"#key" "#request.key"
      el:${requestScope.key}
      (Map(String,Object)actionContext.get("request")).put(key,value);// 会放进map栈的以request为key的Map中
      页面取值语句为
      ognl-"#request.key" (因为action的全局属性会在执行action方法前被interceptor(拦截器)放入request域中,所以找不到时还会到跟元素的action的属性中找
      el- ${requestScope.key} (因为action的全局属性会在执行action方法前被interceptor(拦截器)放入request域中,所以找不到时还会到跟元素的action的属性中找)


      IP属地:河北4楼2016-05-12 12:45
      回复
        lz请教一下如何用ognl获取map栈中非值域的数据呢?


        IP属地:黑龙江6楼2017-09-22 23:51
        回复