• OGNL语法


    OGNL是Object-Graph Navigation Language(对象图导航语言)的缩写,它是一种功能强大的表达式语言。Struts2的标签库以OGNL为基础,大大简化了数据的输出,同时还提供了大量的标签来生产页面效果。


    一、ActionContext、StackContext和ValueStack的关系。
    (1)、ActionContext是Action执行时的上下文。上下文可以看做是一种容器,用于存放Action在执行时用到的对象。ActionContext是线程安全的,在同一个线程中,ActionContext的属性是唯一的。
    (2)、StackContext对象是上下文中的一个java.util.Stack实例。包括Session、Requeset、Application、Parameters、Attr等对象。
    (3)、ValueStack对象。Struts2会为每一次Action的请求创建与之对应的ValueSack,并将所有Action属性数据存储到ValueStack中,再将ValueStack暴露给视图页面。

    二、OGNL语法基础
    1、访问OGNL上下文中的数据
    (1)、<s:property value="uid"/>:运行该标签时,Struts2会再ValueStack中(即在Action类的属性中)查找名为uid的项,并输出其值。
    (2)、<s:property value="#uid"/>:Struts2会再StackContext中查找名为uid的项。
    (3)、<s:property value="#session.uid"/>:Struts2会在StackContext的Session作用域中查找名为uid的项,并输出。
    (4)、<s:property value="#attr.uid"/>:Struts2会在StackContext的Page、Request、Session、Application范围内查找名为uid的项。
    2、访问javabean的方法。
    (1)、访问非静态方法:<s:property value="对象名.方法名(参数值)"/>

    (2)、访问静态方法:<s:property value="@类的全限名@方法名(参数)"/>,示例如下:

      <body>
        <%
        OgnlInfo ognl = new OgnlInfo();
        //将ognl对象放入request作用域中
        request.setAttribute("ognl",ognl);
        %>
        <!-- 执行ognl的非静态方法 -->
        <s:property value="#request.ognl.sayHello('过省')"/>
        <!-- 执行OgnlInfo类的静态方法 -->
        <s:property value="@com.model.OgnlInfo@sayBye('小陈')"/>
      </body>

    运行结果如下:


    3、%符号:"%"符号用于在标志的属性为字符串类型时计算OGNL表达式的值。

      <body>
        <%
            String title="提交";
            pageContext.setAttribute("title",title);
        %>
        不使用%符号,会按原样显示
        <s:submit value="#attr.title"/><br>
        使用%符号,会计算OGNL表达式的值
        <s:submit value="%{#attr.title}"/>
      </body>

    运行结果入下:



  • 相关阅读:
    ASP.Net软件工程师基础(四)
    ASP.Net软件工程师基础(三)
    ASP.Net软件工程师基础(二)
    ASP.Net软件工程师基础(一)
    SVN小小用法(一)svn服务器搭建
    必须声明标量变量
    用户 NT AUTHORITYNETWORK SERVICE 登录失败
    winmail安装完成后,SMTP/POP3/ADMIN/HTTP/IMAP/LDAP服务不能启动?
    CF-798C
    CF-798B
  • 原文地址:https://www.cnblogs.com/gaojiang/p/3059481.html
Copyright © 2020-2023  润新知