• 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>

  • 相关阅读:
    [转]华人总结“十个”出了国才能知道秘密!
    为nopcommerce自定义用户积分功能(2)
    [转]两名清洁女工谈论萨达姆之死
    V4L2编程 视频采集
    C# 自定义箭头组件
    .NET Micro Framework简介
    .NET Micro Framework常见问题问答
    和我一起作Tess的windbg lab Lab6, MemoryLeak
    微软上海招聘有经验的.NET开发人员
    Kinect 1
  • 原文地址:https://www.cnblogs.com/QQW-HH/p/7644654.html
Copyright © 2020-2023  润新知