• 二十二、OGNL的一些其他操作


    二十二、OGNL的一些其他操作

    1. 投影

      ?判断满足条件

      动作类代码: ^ $

       

      public class Demo2Action extends ActionSupport {

          public Demo2Action() {

              System.out.println("实例化了");

          }

       

          private List<Person> persons = new ArrayList<Person>();

       

          public List<Person> getPersons() {

              return persons;

          }

       

          public void setPersons(List<Person> persons) {

              this.persons = persons;

          }

       

          public String execute() {

              // 初始化几个人

              persons.add(new Person("wdx", 18));

              persons.add(new Person("wd", 28));

              persons.add(new Person("cxy", 38));

              return SUCCESS;

          }

      }

       

      Jsp代码:

      <!-- person.{?#this.age>20}针对集合persons的每一个对象的age属性如果大于20,则输出 -->

          <!--会用pkey ,当前遍历的元素为value,放到contextMap -->

          <s:iterator value="persons.{?#this.age>20}" var="p">

              <s:property value="#p.username"/>

              <s:property value="#p.age"/>

          </s:iterator>

          <hr/>

          <!-- persons.{username} 这个集合已经改变了,[wdx, wd, cxy],因此变量指向的是一个String字符串 -->

          <!--会用pkey ,当前遍历的元素为value,放到contextMap -->

          <s:iterator value="persons.{username}" var="p">

              <s:property value="#p"/>

          </s:iterator>

          <s:debug></s:debug>

       

    2. 创建集合对象

      <s:iterator value="{'aa','bb','cc'}" var="s">

              <s:property value="#s" /><br/>

      </s:iterator>

          <br/>----利用OGNL表达式创建一个Map---<br/>

          

      <s:iterator value="#{'a':'aa', 'b':'bb','c':'cc'}}" var="me">

              <s:property value="#me.key"/>=<s:property value="#me.value"/>

      </s:iterator>

      <s:debug></s:debug>

       

    3. OGNL中的%{}操作符的用法

      作用:把普通字符串当做OGNL表达式来用

      <%

              Person p = new Person("王雪",19);

              ActionContext.getContext().getValueStack().push(p);

          %>

          <!-- UI标签中的lable属性的取值,不是一个OGNL表达式,如果要把一个普通字符串当做OGNL表达式,请使用%{} -->

          <s:textfield name="uname" label="%{username}"></s:textfield>

          <s:debug></s:debug>

       

       

      知识:把OGNL表达式当做普通字符串对待,请使用单引号或双引号

    4. OGNL中的$用法
    • 在struts.xml配置文件和国际化消息资源文件中,使用OGNL,放在${}中

    以下是在配置文件中使用OGNL表达式

    <param name="contentDisposition">attachment;filename=${@java.net.URLEncoder@encode(fileName,"UTF-8")}</param>

    • JSP中使用${}

     

    EL表达式还是原有功能,如果在域范围中找不到,{}内部的东西就变成了OGNL表达式。

  • 相关阅读:
    TERSUS笔记员工信息518Tersus数据库下拉菜单<Placeholder Text>默认值点击事件
    TERSUS笔记员工信息517Tersus数据库元件SQL语句传入相关问题总结
    010editor 注册分析[1]
    StartAllBack_3.3.5 记录
    pdb 符号路径
    win10 双机调试环境
    省选联考 2022 题解
    AtCoder Regular Contest 139
    AGC 营业记录
    AtCoder Grand Contest 029
  • 原文地址:https://www.cnblogs.com/Prozhu/p/5886534.html
Copyright © 2020-2023  润新知