projection(投影):俗話說就是過濾,就是過濾器把符合條件的過濾出來
struts.xml:
1
2
3
4
5
|
< package name = "ognl" namespace = "/ognl" extends = "struts-default" > < action name = "pro" class = "cn.edu.hpu.ognl.OgnlAction4" > < result name = "success" >/ognl.jsp</ result > </ action > </ package > |
OgnlAction4.java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
package cn.edu.hpu.ognl; import java.util.ArrayList; import cn.edu.hpu.mode.User; import com.opensymphony.xwork2.ActionSupport; public class OgnlAction4 extends ActionSupport{ private ArrayList<User> users; public OgnlAction4(){ users= new ArrayList<User>(); User user1= new User(); user1.setAge( 18 ); User user2= new User(); user2.setAge( 1 ); User user3= new User(); user3.setAge( 21 ); User user4= new User(); user4.setAge( 23 ); users.add(user1); users.add(user2); users.add(user3); users.add(user4); } public ArrayList<User> getUsers() { return users; } public void setUsers(ArrayList<User> users) { this .users = users; } @Override public String execute() throws Exception { // TODO Auto-generated method stub return "success" ; } } |
鏈接:
1
|
過濾:< a href="<%=basePath%>ognl/pro" rel="external nofollow" >OGNL9</ a >< br /> |
結果界面:
1
2
3
4
5
6
7
8
|
<!-- 正則表達式中,"^"代表開頭,"$"代表結尾,"?"代表過濾 --> < li >投影(過濾):< s:property value = "users.{?#this.age==1}.{age}" />< br /> <!-- 找到所有年齡大于1的user,取第一個 --> < li >投影:< s:property value="users.{^#this.age>1}.{age}"/>< br /> <!-- 找到所有年齡大于1的user,取最后一個 --> < li >投影:< s:property value="users.{$#this.age>1}.{age}"/>< br /> <!-- 找到所有年齡大于1的集合,判斷這個集合是否為空 --> < li >投影:< s:property value="users.{$#this.age>1}.{age} == null"/>< br /> |
結果:
投影(過濾):[1]
投影:[18]
投影:[23]
投影:false
總結
以上就是本文關于Struts2 通過ognl表達式實現投影的全部內容,希望對大家有所幫助。有問題請留言,小編會及時回復大家的。感謝大家對服務器之家網站的支持!
原文鏈接:http://blog.csdn.net/acmman/article/details/47070087