概述
OGNL表达式需要struts2标签的支持, 需要在jsp页面中增加
<%@ taglib uri=”/struts-tags” prefix=”s” %>
- jsp页面通过ognl表达式取出内容
-
<body> pi:<s:property value="@java.lang.Math@PI"/><br> random:<s:property value="@java.lang.Math@random()*100"/><br> 访问action类变量name:<s:property value="name"/><br> 访问action类变量pwd:<s:property value="pwd"/><br> 访问action类中对象属性user.uname:<s:property value="user.uname"/><br> 访问action类中对象属性user.age:<s:property value="user.age"/><br> 访问action类中对象方法user.fun():<s:property value="user.fun()"/><br> 访问action类中普通方法:<s:property value="actionFun()"/><br> 访问某个类的静态方法:<s:property value="@form.S@s"/><br> 访问某个类的静态属性:<s:property value="@form.S@fun()"/><br> 访问某个类的构造方法:<s:property value="new form.User()"/><br> <!-- 得到的是此类的toString方法 --> 访问list集合:<s:property value="user_list"/><br> 访问list集和元素:<s:property value="user_list[0]"/><br> 访问Map集合:<s:property value="user_map"/><br> 访问Map集合指定key:<s:property value="user_map.k1"/><br> 访问Map集合所有key:<s:property value="user_map.keys"/><br> 访问Map集合所有value:<s:property value="user_map.values"/><br> 筛选list内容:<s:property value="user_list.{?#this.age==20}.{uname}"/><br><!-- ?表示取出满足条件的,#this表示取出这个 --> 筛选list内容:<s:property value="user_list.{^#this.age>1}.{uname}"/><br> <!-- ^表示取出满足条件的第一个 --> 筛选list内容:<s:property value="user_list.{$#this.age>1}.{uname}"/><br><!-- ^表示取出满足条件的最后一个 --> <s:debug></s:debug> </body>
- action类, 每个属性必须提供getter(),setter()
-
package form; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; import com.opensymphony.xwork2.util.ValueStack; public class Form1Action extends ActionSupport{ String name; String pwd; User user; List<User> user_list; Map<String, Object> user_map; public List<User> getUser_list() { return user_list; } public void setUser_list(List<User> user_list) { this.user_list = user_list; } public Map<String, Object> getUser_map() { return user_map; } public void setUser_map(Map<String, Object> user_map) { this.user_map = user_map; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Form1Action() { System.out.println("执行。。。"); } public String execute() throws Exception { user_list = new ArrayList<User>(); user_list.add(new User(19,"tom")); user_list.add(new User(20,"jack")); user_map = new HashMap<String, Object>(); user_map.put("k1", new User(19,"tom2")); user_map.put("k2", new User(20,"jack2")); return Action.SUCCESS; } public String actionFun(){ return "action类的fun方法"; } }
- User类
-
package form; public class User { int age; String uname; public User(int age, String uname) { super(); this.age = age; this.uname = uname; } public User() { } public int getAge() { return age; } public String getUname() { return uname; } public void setAge(int age) { this.age = age; } public void setUname(String uname) { this.uname = uname; } public String fun(){ return "my name is"+uname; } @Override public String toString() { return "User [age=" + age + ", uname=" + uname + "]"; } }
- struts.xml
-
<!--访问静态方法必须要配置此常量--> <constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant> <package name="default" namespace="/" extends="struts-default"> <action name="demo" class="form.Form1Action"> <result>/index.jsp</result> </action> </package>
最后
以上就是无情小蚂蚁为你收集整理的OGNL表达式的全部内容,希望文章能够帮你解决OGNL表达式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复