1. 什么是OGNL表达式
    1. Object-Graph Navigation Language的缩写。
    2. 可以遍历整个对象结构图,实现对象类型转换等功能的表达式。
    3. OGNL实际上是个Map集合,有一个上下文根对象。
    4. ActionContext作为OGNL上下文,并把ValueStack作为根对象。
  2. ValueStack
    1. 可以执行,增加,删除,查询。
    2. struts2会把Action放到栈顶。
  3. OGNL中的几个家伙
    1. #
      1. 访问非根对象属性
      2. #session.msg
        相当于 ActionContext.getContext().getSession().getAttribute("msg");
    2. %
      1. 字符串类型时,计算OGNL表达式
    3. $
      1. 在国际化资源文件中,引用OGNL表达式
      2. 在Struts 2框架的配置文件中引用OGNL表达式
    4. @
      1. 访问静态方法
    5. 常用标签
      1. 流程控制标签
      2.  <s:if test="{}"></s:if>//if表达式
        <s:if test="{}"></s:if><s:else></s:else>//if else 表达式
        <s:ifelse test="{}"></s:ifelse>//Ifelse 表达式
        //test 字符串 要加%{} 判断集合元素的符号 in,not in
        //in 判断集合是否在当前集合内,not in 判断集合是否不在当前集合内. OGNL过滤表达式
        ?://获取所有符合的元素
        ^://获取第一个符合的元素
        $://获取最后一个符合的元素 <s:iterator value=""></s:iterator>
        //对一个集合进行迭代
        //id 集合内元素的ID
        //status 指定迭代对象名称
        <s:iterator value="books.{?#this.price > 35}">
        //?#this.price > 35 this 指取当前集合内的属性值符合条件的元素。
        <s:property value="title" /> - $<s:property value="price" />
        </s:iterator>
      3. 通用标签
      4.  <s:property value="">
        //default 获取属性值.
        //scope 指定命名空间.
        //value 属性名
        //id 元素标识 <s:set scope="" name="" value="">
        //设置属性值 value 如果是字符串需要加'',否则会当成变量.
        //scope 可以是application、session、request、 page或action. <s:action id="" name="" namespace="" executeResult="false|true" ignoreContextParams="false|true"/>
        //action 引用名称 namespace 命名空间 executeResult 是否返回视图 ignoreContextParams 是否传递参数 <s:bean id="" name="">
        // id 引用名称 带id 标签结束不会移除对象 name 实现类全路径
        <s:param name="" value=""/>
        //name 参数名称 value 参数值
        </s:bean> <s:date format="" nice="" name="" id=""/>
        //format 日期输出格式 nice 输出时间差 name 时间值 id 引用名称
      5. 调试标签
      6.  <s:debug/>
        //输出所有的信息valuestack context <s:fielderror/>
        //控制端 调用addFieldErrors(,) <s:actionerror/>
        //获取Action错误消息 需要在控制端调用addActionError 方法 <s:actionmessage/>
        //获取Action消息 需要在控制端调用addActionMessage方法
      7. 表单标签

struts2简单入门-OGNL表达式的更多相关文章

  1. (补充)9.Struts2中的OGNL表达式

    OGNL表达式概述 1. OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写 * 所谓对象图,即以任意一个对象为根,通过OGNL可以访问与这个对象关 ...

  2. 20160502-struts2入门--ognl表达式

    一.OGNL表达式语言 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目. Struts 2框架使用OGNL作为默认的表达式语言 ...

  3. struts2学习笔记--OGNL表达式1

    struts2标签库主要使用的是OGNL语言,类似于El表达式,但是强大得多,它是一种操作对象属性的表达式语言,OGNL有自己的优点: 能够访问对象的方法,如list.size(); 能够访问静态属性 ...

  4. struts2框架之OGNL表达式概述(在代码中使用OGNL表达式)

    1. OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写 * 所谓对象图,即以任意一个对象为根,通过OGNL可以访问与这个对象关联的其它对象 * 通 ...

  5. Struts2中的OGNL表达式

    一.OGNL表达式简介 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目.所谓对象图,即以任意一个对象为根,通过OGNL可以访问 ...

  6. 【java开发系列】—— struts2简单入门示例

    前言 最近正好有时间总结一下,过去的知识历程,虽说东西都是入门级的,高手肯定是不屑一顾了,但是对于初次涉猎的小白们,还是可以提供点参考的. struts2其实就是为我们封装了servlet,简化了js ...

  7. struts2中使用ognl表达式时各种符号的使用规则$,#,%

    OGNL表达式struts2标签“%,#,$” 一.什么是OGNL,有什么特点? OGNL(Object-Graph Navigation Language),大概可以理解为:对象图形化导航语言.是一 ...

  8. 【基于初学者的SSH】struts2 值栈的详解与struts2标签库+ognl表达式

    一:什么是值栈:struts2里面本身提供的一种存储机制,类似于域对象,值栈,可以存值和取值 特点:先进后出,最上面的元素叫做栈顶,也叫压栈. <s:debug></s:debug& ...

  9. 2018.11.24 struts2中的OGNL表达式及两者的结合

    OGNL表达式 OGNL:对象视图导航语言. ${user.addr.name} 这种写法就叫对象视图导航. OGNL不仅仅可以视图导航.支持比EL表达式更加丰富的功能. 理解图示 使用OGNL准备工 ...

随机推荐

  1. 报错:[Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop bei

    项目中遇到父组件传值 activeIndex <Tabs :tabs="tabs" :activeIndex="activeIndex" >< ...

  2. Vue SSR: 基本用法 (二)

    上一篇讲解了ssr的原理,这篇主要讲基本用法: 1.安装 npm install vue vue-server-renderer --save 我们将在整个指南中使用 NPM,但你也可以使用 Yarn ...

  3. 理解IO、NIO、 AIO

    转载:https://baijiahao.baidu.com/s?id=1586112410163034993&wfr=spider&for=pc nio 同步: 自己亲自出马持银行卡 ...

  4. 24 python初学(异常)

    try, except, else, finally执行顺序:1. 先执行 try 里面的代码块,如果发生异常就会去捕获. 2. 没有错误就会执行 else 里面的信息. 3. 无论怎样都会执行 fi ...

  5. 三种方法实现Hadoop(MapReduce)全局排序(1)

    我们可能会有些需求要求MapReduce的输出全局有序,这里说的有序是指Key全局有序.但是我们知道,MapReduce默认只是保证同一个分区内的Key是有序的,但是不保证全局有序.基于此,本文提供三 ...

  6. C# FileSystemWatcher 并发

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

  7. FineUIPro v5.2.0已发布(jQuery升级,自定义图标,日期控件)

    FineUIPro/MVC/Core/JS v5.2.0 已经于 2018-8-20 发布,官网示例已更新,如果大家在测试中发现任何问题,请回复本帖,谢谢了. 在线示例: FineUI Pro:htt ...

  8. 控制结构(5): 必经之地(using)

    // 上一篇:局部化(localization) // 下一篇:最近最少使用(LRU) 基于语言提供的基本控制结构,更好地组织和表达程序,需要良好的控制结构. 前情回顾 上一周,我们谈到了分支/卫语句 ...

  9. 阿里云对象存储OSS与文件存储NAS的区别

    一.简介 应用场景:选择一款存储产品,面向文档数据的存取,不会涉及到数据处理. 产品选型主要从OSS和NAS中选择一款,满足文档存储的需求. 二.NAS优缺点 NAS 是一种采用直接与网络介质相连的特 ...

  10. CDH 集群机器上部署 Jupyter notebook 使用 Pyspark 读取 Hive 数据库

    开始直接在 CDH Pyspark 的环境里面运行 Ipython . spark = SparkSession \ .builder \ .master('yarn') \ .appName('md ...