zoukankan      html  css  js  c++  java
  • OGNL和Struts2标签

    OGNL和Struts2标签

    你使用过的OGNL

      页面获取并输出Action属性<s:property value="userName"/>

      页面中获取request保存的数据<s:property value="#request.loginAccess "/>

    OGNL是什么

      Object Graph Navigation Language ,对象图导航语言

      是Struts2默认的表达式语言,开源,功能更强大

      存取对象的属性、调用对象的方法;访问静态方法和属性

      访问值栈以及Stack Context

      操作集合对象

      支持赋值、运算操作、字段类型转化等

    OGNL访问值栈

      通过<s:property value=“house.title”/>为什么可以获取到房屋的标题信息?

      通过<s:property value=“house.title”/>为什么可以获取到房屋的标题信息?

      house为Action的属性,Action的实例放在值栈(Value Stack)中

      OGNL可以直接访问值栈中的值

    值栈(Value Stack)

      存放数据的内存空间

      值栈中存放了Action的实例

      如:可以通过OGNL来访问Action实例中的属性值

    OGNL访问Stack Context

    为什么通过 <s:property value=“#request.loginAccess”/>可以取得request保存的值?

      request的相关属性以及参数存放在Stack Context中

      OGNL可以通过#访问Stack Context的值

    Stack Context

      存放数据的内存空间,Stack Context 中存放了request的参数、属性、session的属性、application的属性

      attr:在所有的属性范围中获取值,依次搜索page、request、session和application

      OGNL一般都是和Struts2标签一起使用

      <s:debug/>

     需求说明

      以租房管理系统为例,使用<s:debug/>观察值栈以及Stack Context的内容

      实现思路

        1、创建实体类House、District、Street、HouseType

        2、创建JSP页面houseView.jsp

        3、修改HouseAction增加view()方法,为request添加值

        4、页面中使用<s:property value="…"/>以及<s:property value="#... "/>获取值

        5、页面中添加<s:debug/>

     

    OGNL访问List

      OGNL如何访问集合(List)

      指明索引即可访问List中的指定元素

      如:<s:property value="streetsList[0]"/>

      可以访问List的方法

      如:<s:property value="streetsList.size()"/>

      如:<s:property value="streetsList. isEmpty()"/>

      可以直接在OGNL中构造List

      如:{1,2,3}

      如:{1,2,3}[0]

      OGNL访问数组与访问List类似

     

     

    OGNL访问Map

      OGNL如何访问集合(Map)

        Map名称[‘键的名称’]或者Map名称.键的名称访问特定元素

        如:<s:property value="streetsMap['m1']"/>

        如:<s:property value="streetsMap.m1"/>

      可以访问Map的方法

        如:<s:property value="streetsMap.size()"/>

        如:<s:property value="streetsMap. isEmpty()"/>

      可以直接在OGNL中构造Map

        如:#{'first':'zhangsan','second':'lisi'}

        如:#{'first':'zhangsan','second':'lisi'}['first']

        #{'first':'zhangsan','second':'lisi'}.first

    OGNL访问Set

      OGNL如何访问集合(Set)

        转换为数组再通过索引即可访问指定元素

        如:<s:property value="streetsSet.toArray()[0]"/>

      可以访问Set的方法

        如:<s:property value="streetsSet.size()"/>

        如:<s:property value="streetsSet. isEmpty()"/>

    OGNL其他使用

      OGNL访问静态方法、静态属性

      @类的完全限定名@静态方法名

      @类的完全限定名@静态属性名

      前提:修改struts.xml配置

      <constant name="struts.ognl.allowStaticMethodAccess"value="true" />

    OGNL投影、选择

      投影:选出集合中每个元素的相同属性组成新的集合

      选择:过滤满足选择条件的集合元素

  • 相关阅读:
    windows环境下的python2.6 安装pydelicious API的正确方法与步骤
    2、提供推荐
    python的os.path.join()
    ompl_interface/OMPLPlanner
    ros moveit 安装
    ipv6 duplicate address detected
    python版本原因导致不能安装和卸载软件
    RoboWare Viewer安装可能出现的问题
    npm install 时卡在了node-gyp rebuild
    npm install 出错
  • 原文地址:https://www.cnblogs.com/xuerong/p/5037779.html
Copyright © 2011-2022 走看看