Struts2 「#」符號:獲取集合中的資料並進行選擇操作

2020-07-16 10:04:58
選擇是對集合中行的操作。所謂選擇,就是通過一定的條件獲取集合中滿足這一條件的資料,所獲取的行就是對集合中資料的選擇操作。在操作時需要應用“#”將集合中的資料取出進行選擇操作。

語法:

list.{?#conditional expression>value}

如在一個集合中包含多個學生物件,獲取這個集合中學生年齡大於 10 的所有學生,就是選擇操作。

範例

本範例應用“#”過濾集合,選出價格超過 50 美元的圖書並顯示。

建立 OgnlAction 檔案,在檔案中定義變數,並通過 add() 方法對變數進行賦值,關鍵程式碼如下:
public class OgnlAction extends ActionSupport{  //定義List型別books變數
  private List<Book>books;
  public List<Book>getBooks(){
    return books;
  }
  public String execute(){  //初始化books物件
    books = new LinkedList<Book>();  //應用add()方法為List型別books變數賦值
    books.add(new Book("978-0735619678","程式設計寶典",50.99));
    books.add(new Book("978-0596007867","典型模組大全",35.96));
    books.add(new Book("978-0201633610","開發實戰寶典",50.19));
    books.add(new Book("978-0596527341","範例大全",25.19));
    books.add(new Book("978-0735605350","技術開發大全",50.19));
    return SUCCESS;
  }
}

建立 JSP 檔案,使用“#”對集合進行選擇過濾,關鍵程式碼如下:
<body>
  <h3>用於過濾集合</h3>
  <p>書的價格超過50美元的是</p>
  <ul>
    <s:iterator value="books.{?#this.price>50}">
      <li><s:property value="title"/>-$<s:property value="price"/></li>
    </s:iterator>
  </ul>
  <p>"範例大全"的價格是:<s:property value="books.{?#this.title=='範例大全'}.{price}
    [0]"/></p>
</body>}