我是靠谱客的博主 无情小蚂蚁,最近开发中收集的这篇文章主要介绍OGNL表达式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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表达式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部