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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章