zoukankan      html  css  js  c++  java
  • 二十二、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表达式。

  • 相关阅读:
    4月21日Java作业
    5.14 Java作业
    第十周java作业
    4月30号作业
    第七周上机
    4.9Java
    通宵看剧有感
    error: pathspec 'xxxxxxxxx' did not match any file(s) known to git
    markdown格式测试
    博客申请通过啦
  • 原文地址:https://www.cnblogs.com/Prozhu/p/5886534.html
Copyright © 2011-2022 走看看