struts2简单入门-OGNL表达式

时间:2024-07-26 21:36:20
  1. 什么是OGNL表达式
    1. Object-Graph Navigation Language的缩写。
    2. 可以遍历整个对象结构图,实现对象类型转换等功能的表达式。
    3. OGNL实际上是个Map集合,有一个上下文根对象。
    4. ActionContext作为OGNL上下文,并把ValueStack作为根对象。
  2. ValueStack
    1. 可以执行,增加,删除,查询。
    2. struts2会把Action放到栈顶。
    3. struts2简单入门-OGNL表达式
  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. 表单标签