Strut2:OGNL表达式

源码下载地址:http://download.csdn.net/detail/zhoujing_0424/9239429
OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。用法如下:
ognl_test.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%
request.setAttribute("user", "ognl");
request.getSession().setAttribute("employee", "xiaoming");
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'ognl_test.jsp' starting page</title>
  </head>

  <body>
    <s:property value="#request.user"/><br>
    <s:property value="#session.employee"/><br>

    <br>============================================<br>
    <!-- 使用OGNL表达式创建List集合对象 -->
    <s:set var="list" value="{'first','two','three'}"></s:set>  
    <!-- s:iterator标签在迭代集合时有个特点:会把当前迭代的对象放在值栈的栈顶 -->
    <s:iterator value="#list">
        <s:property/><br>
    </s:iterator>

    <br>============================================<br>
    <!-- 使用OGNL表达式创建Map集合对象 -->
    <s:set var="maps" value="#{'key1':90,'key2':35,'key3':12}"></s:set>
    <!-- 使用迭代标签对集合进行迭代 -->
    <s:iterator value="#maps">
        <s:property value="key"/>=<s:property value="value"/><br>
    </s:iterator>

    <br>============================================<br>
    <!-- 使用OGNL表达式判断元素是否在集合中 -->
    <s:if test="'fool' not in {'fooling','bar'}">
     不 在
    </s:if>
    <s:else></s:else>

  </body>
</html>

使用OGNL表达式实现投影功能:
PersonListAction.java:

package cn.zj.action;

import java.util.ArrayList;
import java.util.List;

public class PersonListAction {
    private String name;
    private List<Book> books;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<Book> getBooks() {
        return books;
    }

    public void setBooks(List<Book> books) {
        this.books = books;
    }

    public String execute(){
        books= new ArrayList<Book>();
        books.add(new Book(1,"struts",36));
        books.add(new Book(2,"spring",45));
        books.add(new Book(3,"hibernate",62));
        name="xiaozhang";
        return "list";
    }
}

Book.java:

package cn.zj.action;

public class Book {
    private Integer id;
    private String name;
    private Integer price;
    public Book(Integer id, String name, Integer price) {
        this.id = id;
        this.name = name;
        this.price = price;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getPrice() {
        return price;
    }
    public void setPrice(Integer price) {
        this.price = price;
    }
}

personlist.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'personlist.jsp' starting page</title>
  </head>

  <body>
    <s:property value="name"/><br>
    ${name}<br>
    <s:property value="books"/><br>

    <br>============================================<br>
    <!-- 采用OGNL表达式实现投影功能,只显示价格大于60的记录 -->
    <s:iterator value="books.{?#this.price>60}">
        <s:property value="name"/>,<s:property value="price"/><br>
    </s:iterator>
  </body>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章