二十二、OGNL的一些其他操作

  1. 投影

    ?判断满足条件

    动作类代码: ^ $

     

    public
    class
    Demo2Action
    extends ActionSupport {

        public Demo2Action() {

            System.out.println("实例化了");

        }

     

        private List<Person> persons = new ArrayList<Person>();

     

        public List<Person> getPersons() {

            return
    persons;

        }

     

        public
    void setPersons(List<Person> persons) {

            this.persons = persons;

        }

     

        public String execute() {

            // 初始化几个人

            persons.add(new Person("wdx", 18));

            persons.add(new Person("wd", 28));

            persons.add(new Person("cxy", 38));

            return
    SUCCESS;

        }

    }

     

    Jsp代码:

    ,则输出 -->

        <!--会用p为key ,当前遍历的元素为value,放到contextMap中 -->

        <s:iterator
    value="persons.{?#this.age>20}"
    var="p">

            <s:property
    value="#p.username"/>

            <s:property
    value="#p.age"/>

        </s:iterator>

        <hr/>

        <!-- persons.{username} 这个集合已经改变了,[wdx, wd, cxy],因此变量指向的是一个String字符串 -->

        <!--会用p为key ,当前遍历的元素为value,放到contextMap中 -->

        <s:iterator
    value="persons.{username}"
    var="p">

            <s:property
    value="#p"/>

        </s:iterator>

        <s:debug></s:debug>

     

  2. 创建集合对象

    <s:iterator
    value="{'aa','bb','cc'}"
    var="s">

            <s:property
    value="#s"
    /><br/>

    </s:iterator>

        <br/>----利用OGNL表达式创建一个Map---<br/>

        

    <s:iterator
    value="#{'a':'aa', 'b':'bb','c':'cc'}}"
    var="me">

            <s:property
    value="#me.key"/>=<s:property
    value="#me.value"/>

    </s:iterator>

    <s:debug></s:debug>

     

  3. OGNL中的%{}操作符的用法

    作用:把普通字符串当做OGNL表达式来用

    <%

            Person p = new Person("王雪",19);

            ActionContext.getContext().getValueStack().push(p);

        %>

        <!-- UI标签中的lable属性的取值,不是一个OGNL表达式,如果要把一个普通字符串当做OGNL表达式,请使用%{} -->

        <s:textfield
    name="uname"
    label="%{username}"></s:textfield>

        <s:debug></s:debug>

     

     

    知识:把OGNL表达式当做普通字符串对待,请使用单引号或双引号

  4. OGNL中的$用法
  • 在struts.xml配置文件和国际化消息资源文件中,使用OGNL,放在${}中

以下是在配置文件中使用OGNL表达式

<param
name="contentDisposition">attachment;filename=${@java.net.URLEncoder@encode(fileName,"UTF-8")}</param>

  • 在JSP中使用${}

 

EL表达式还是原有功能,如果在域范围中找不到,{}内部的东西就变成了OGNL表达式。

二十二、OGNL的一些其他操作的更多相关文章

  1. WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[中篇]

    原文:WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[中篇] 在[上篇]中,我们分别站在消息交换和编程的角度介绍了SOAP Fault和FaultException异常.在服务执行过 ...

  2. VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池

    VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池 在上一节我们创建了完整克隆的自动专有桌面池,在创建过程比较缓慢,这次我们将学习创建Vi ...

  3. 备忘录模式 Memento 快照模式 标记Token模式 行为型 设计模式(二十二)

    备忘录模式 Memento   沿着脚印,走过你来时的路,回到原点.     苦海翻起爱恨   在世间难逃避命运   相亲竟不可接近   或我应该相信是缘份   一首<一生所爱>触动了多少 ...

  4. iOS 11开发教程(二十二)iOS11应用视图实现按钮的响应(2)

    iOS 11开发教程(二十二)iOS11应用视图实现按钮的响应(2) 此时,当用户轻拍按钮后,一个叫tapButton()的方法就会被触发. 注意:以上这一种方式是动作声明和关联一起进行的,还有一种先 ...

  5. JAVA基础知识总结:一到二十二全部总结

    >一: 一.软件开发的常识 1.什么是软件? 一系列按照特定顺序组织起来的计算机数据或者指令 常见的软件: 系统软件:Windows\Mac OS \Linux 应用软件:QQ,一系列的播放器( ...

  6. SQL注入之Sqli-labs系列第二十一关(基于复杂性的cookie POST报错注入)和二十二关(基于双引号的cookie POST报错注入)

    开始挑战第二十一关(Cookie Injection- Error Based- complex - string) 和二十二关(Cookie Injection- Error Based- Doub ...

  7. 「kuangbin带你飞」专题二十二 区间DP

    layout: post title: 「kuangbin带你飞」专题二十二 区间DP author: "luowentaoaa" catalog: true tags: - ku ...

  8. 剑指Offer(二十二):从上往下打印二叉树

    剑指Offer(二十二):从上往下打印二叉树 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/b ...

  9. Senparc.Weixin.MP SDK 微信公众平台开发教程(二十二):如何安装 Nuget(dll) 后使用项目源代码调试

    最近碰到开发者问:我使用 nuget 安装了 Senparc.Weixin SDK,但是有一些已经封装好的过程想要调试,我又不想直接附加源代码项目,这样就没有办法同步更新了,我应该怎么办? 这其实是一 ...

随机推荐

  1. linux free命令(转载)

    来源:http://www.cnblogs.com/peida/archive/2012/12/25/2831814.html free命令可以显示Linux系统中空闲的.已用的物理内存及swap内存 ...

  2. Windows下Nginx的启动、停止等命令(转)

    Windows下Nginx的启动.停止等命令 在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动.停止Nginx服务,重新载入Nginx等,下面我就进行一些简单的介绍.1.启 ...

  3. [kuangbin带你飞]专题十四 数论基础

            ID Origin Title   111 / 423 Problem A LightOJ 1370 Bi-shoe and Phi-shoe   21 / 74 Problem B ...

  4. Codeforces 716C[数论][构造]

    /* CF傻逼构造题 某人要经过n回合游戏,初始分值是2,等级为1. 每次有两种操作 1.无条件,分值加上自己的等级数. 2.当目前的数字是完全平方数并且该数字开方以后是等级数加1的整数倍,那么可以将 ...

  5. nyoj 93 汉诺塔(三)

    点击打开链接 汉诺塔(三) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝 ...

  6. [POJ 1635] Subway tree systems (树哈希)

    题目链接:http://poj.org/problem?id=1635 题目大意:给你两棵树的dfs描述串,从根节点出发,0代表向深搜,1代表回溯. 我刚开始自己设计了哈希函数,不知道为什么有问题.. ...

  7. (整理)C#实现UDP广播

    (一) IP地址解析 IP地址的类型:XXX.XXX.XXX.XXXA类: 1.0.0.1--126.255.255.254 最高位是0: 1个字节的网络地址和3个地址的主机地址 测试地址:127.X ...

  8. Oracle 10g RAC中的DRM问题及关闭

    在RAC环境中,Oracle使用GRD(Global Resource Service)来记录各个RAC节点的资源信息,具体通过GCS(Global Cache Service)和GES(Global ...

  9. js获取上一页、当前页及域名url方法,JS反回上一页的方法

    <html> <head> <title>js获取上一页url,js获取前一页地址,javascripts获取上一页url,javascript获取前一页地址< ...

  10. [VB.NET]拖动操作的技术基础

    1.设置需要接受拖动事件的控件的AllowDrop属性为True,在开发界面时配置,不可通过代码配置 2.在DragEnter事件处理程序里,为e.Effet设置枚举值,否则拖动无效 Private ...