struts-OGNL

特点  常用来访问值栈里对象属性的一种语言

    通常由struts标签来解析执行  <%@ taglib prefix="s" uri="/struts-tags"%>

值栈  特点  ValueStack

        栈的特点:后入先出

    内容  对象栈  存放action的实例及相关对象

        Map栈  存放封装web资源的Map对象  application,session,request,parameter

                            attr  通用属性,按照request,session,application的顺序查找属性值

             实际上是ActionCont的引用

    API  通过 ActionContext 对象的 getValueStack() 获取值栈对象

      方法  push(Object)  把对象压入对象栈的顶部

          pop()  移除对象栈的顶部对象(类似删除)  

          peek()  得到对象栈顶部的对象(类似get)  

访问方式

  struts标签  <s:property value=""/>  只输出<s:property/>会输出栈顶的对象

         访问对象栈  <s:property value="属性名"/>  按先后顺序匹配属性名,只输出找到的第一个

                可定义起始位置  value="[索引]['属性名']"  (索引值从0开始)

                        value="[索引].属性名"

         访问Map栈  <s:property value="#作用域.key"/>  如果作用域=attr,按照request,session,application的顺序查找属性值

         访问对象的方法  value=“[起始索引].方法名(参数列表)”  实例方法

         访问类的静态方法和属性  value=“@全类名@方法名(参数列表)”  

                      value=“@全类名@静态属性名(参数列表)”  静态方法和属性,默认不允许访问,要在struts里打开

                      打开的语句<constant name="struts.ogrl.allowStaticMethodAccess" value="true"></constant> 

         访问对象的集合属性  输出集合内容  value=“[起始索引].集合属性名”

                    访问集合单元  数组和List  value=“[起始索引].集合属性名[索引]”

                            Map  value=“[起始索引].集合属性名[‘key’]”

                    获取集合长度  数组  value=“[起始索引].集合属性名.lenght”

                            List和Map  value=“[起始索引].集合属性名.size”

                    判断内容是否为空  value=“[起始索引].集合属性名.isEmpty”

  使用EL  访问对象栈  ${属性名}  按先后顺序匹配属性名,只输出找到的第一个,不能定义查找的起始位置

        访问Map栈  ${作用域.属性名}  

原文地址:https://www.cnblogs.com/jingfengling/p/6078381.html