zoukankan      html  css  js  c++  java
  • OGNL

    1.什么是OGNL?
      ObjectGraphNavigationLanguage 和EL同为表达式语言,但功能更为强大

    2.OGNL在Struts2中做两件事

    • 表达式语言
      • 将表单或Struts2标签与特定的java数据绑定起来,用来将数据移入,移出框架
    • 类型转换
      • 数据进入和流出框架,在页面数据的字符串类型和java数据类型进行转换

    3.值栈(valueStack)

    • 由Struts2框架创建的存储区域,具有栈的特点 Action的实例会被存放到值栈中
    • OGNL访问值栈重上到下的顺序 ,靠近栈顶的同名属性会被读取

    4.类型转换

    • 日期转换
      • 局部:ArrayDataTransferAction-conversion.properties timeDate=cn.converter.DateConverter          
      • 全局:xwork-conversion.propertiesjava.util.Date=cn.converter.DateConverter

    5.修改所有的错误信息
      <constantname="struts.custom.i18n.resources"value="message"/>
    6.配置message.properties
      xwork.error.action.execution=ErrorduringActioninvocation
      xwork.exception.missing-action=ThereisnoActionmappedforactionname{0}.
      xwork.exception.missing-package-action=ThereisnoActionmappedfornamespace{0}andactionname{1}.
      xwork.default.invalid.fieldvalue=u5B57u6BB5"{0}"u65E0u6548.

    7.配置struts.xml

    8.OGNL表达式

    • 注意事项
      • 访问Bean的属性
      • 必须具有无参构造
      • Set/get方法符合javaBean规范

    实例
    创建集合对象:
    <s:setname="userList"value="{'Jason','Tom','Marry'}"/>
    <s:propertyvalue="#userList[1]"/>
    <s:propertyvalue="#userList.size"/>

    <hr>
    创建Map
    <s:setname="map"value="#{'cn':'China','us':'the United States'}"/>
    <s:propertyvalue="#map.cn"/>
    <s:propertyvalue="#map['cn']"/>
    <hr>访问非值栈对象加#
    <s:setname="age"value="20"scope="request"></s:set>
    <s:setname="username"value="'Jason'"scope="session"></s:set>
    <s:setname="count"value="5"scope="application"></s:set>

    #request.age:<s:propertyvalue="#request.age"/><br>
    #session.username:<s:propertyvalue="#session.username"/><br>
    #application.count:<s:propertyvalue="#application.count"/><br>
    #attr.count:<s:propertyvalue="#attr.count"/><br>
    <hr>演示字符串常量
    <s:setname="country1"value="China"></s:set>
    <s:setname="country2"value="'China'"></s:set>
    常量使用单引号
    #country1:<s:propertyvalue="#country1"/><br>
    #country2:<s:propertyvalue="#country2"/><br>
    没指定访问类型只有request可以
    #request.country2:<s:propertyvalue="#request.country2"/><br>

  • 相关阅读:
    html
    jQuery
    Python基础(一)
    excel中怎样批量取消隐藏工作表
    AD密码过期查询
    @Controller和@RestController的区别
    编写一个JPA测试用例
    SpringBoot(二)——使用Mysql和JPA
    Linux命令大全
    Centos7安装Mysql
  • 原文地址:https://www.cnblogs.com/QQW-HH/p/7644654.html
Copyright © 2011-2022 走看看