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