• OGNL表达式泛泛学习



    #application对象 用于访问ServletContext
    例如:#application.userName或者#application['userName'],相当于调用ServletContext的getAttribute("username");


    <package name="itcast" namespace="/itcast" extends="struts-default">
       <action name="list" class="cn.itcast.action.PersonListAction">
        <reslut name="list">/WEB-INF/page/personlist.jsp</result>
    </action>
         
    </package>


    ognl表达式特点

    <s:set var="list" vlaue="{'第一个','第二个','第三个'}"/>
    <!-- s:iterator标签在迭代集合时有个特点:会把当前迭代的对象放在值栈的栈顶 -->
    <s:iterator value="#list">
       <s:property/></br>
    </s:iterator>

    ****************采用OGNL表达式创建List/Map集合对象

    <s:set var="maps" vlaue="#{'key1':value,'key2':35,'key3':12}"/>
    <!-- s:iterator标签在迭代集合时有个特点:会把当前迭代的对象放在值栈的栈顶 -->
    <s:iterator value="#maps">
       <s:property value="key"/>=<s:property value="value"/></br>
    </s:iterator>


    内部的机制

    package cn.itcast.action;

    import java.util.HashMap;
    import java.util.Map;

    public class MapTest {
         public static void main(String[] args){
                   Map<String Key,Integer value>  maps= new HashMap<String,Integer>();
                   maps.put("key1",67);
                   maps.put("key2",78);
                   maps.put("key3",23);
                   for(Map.Entry<String,Integer> entry : maps.entrySet())
                   {
                       System.out.println(entry.getKey() + "=" + entry.getValue());
                   }
    }
    }

    ************采用OGNL表达式判断对象是否存在于集合中
    <s:if test="'foo' in {'foo','bar'}>
       在
    </s:if>
    <s:else>
      不在
    </s:else>

    *****************OGNL表达式的投影功能 不实用
    List <Book> books= ...;
    List<Book> books=...;
    bookid     name   price
    =========================
    89         aaa     91
    =========================
    要求只显示价格大于60的记录
    1>要求取价格大于60的记录 books --> 子集合中
    ognl : books.{?#this.price>60} 从大集合中筛选满足这个条件的子集合
    打?号表示获取符合逻辑的元素
    #this代表对大集合进行迭代
    #this.price>60

    <s:iterator value="books.{?#this.price>60}">取得子集合并迭代
    </s:property value="name"/>,价格<s:property value="price"/></br>


    完全可以使用Struts标签和EL表达式  jstl/El
    ActionContext.put(); request

    但是要调用对象的方法就可以使用OGNL表达式
    ognl功能强大
    个人观点: 能满足应用需要  sun规范系统

  • 相关阅读:
    sap 登陆增强
    去除字符串末尾的空格
    abap 动态控制状态栏按钮
    首页菜单显示TCODE
    me23n去价格
    abap 导出数据到excle,粘贴复制法
    TCODE找相應的BAPI(主要是找到包PACKAGE)
    Sap自动编号工具(SNRO)
    jQuery 实现置顶效果
    order by 不能使用别名
  • 原文地址:https://www.cnblogs.com/wuhuisheng/p/2102441.html
Copyright © 2020-2023  润新知