当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

OGNL 入门教程

发表于: 2012-11-28   作者:blackproof   来源:转载   浏览次数:
摘要: ognl是一种表达式语言,感觉跟velocity这些东西差不多 struts2是根据ognl做的,实现mvc   ognl需要两个包ognl包,还有xwork-core包,要不会保存,包什么没有javassit什么滴   下面给出几个ognl的入门小例子 来源 http://blog.csdn.net/mmm123lmj/article/details/4

ognl是一种表达式语言,感觉跟velocity这些东西差不多

struts2是根据ognl做的,实现mvc

 

ognl需要两个包ognl包,还有xwork-core包,要不会保存,包什么没有javassit什么滴

 

下面给出几个ognl的入门小例子

来源 http://blog.csdn.net/mmm123lmj/article/details/4527898

 

package org.ognl.test;

import java.util.HashMap;
import java.util.Map;

import ognl.Ognl;
import junit.framework.TestCase;

/**
 * http://blog.csdn.net/mmm123lmj/article/details/4527898
 * @author Administrator
 *
 */
public class OgnlTest extends TestCase {

	/*获得类属性,以及使用root getValue*/
	public void testOgnl_01() throws Exception{
		User user = new User();
		user.setUsername("dirk");
		
		String value = (String) Ognl.getValue("username", user);
		System.out.println(value);
	}
	
	public void testOgnl_02() throws Exception{
		User user = new User();
		Person p = new Person();
		p.setUsername("dallas");
		user.setPerson(p);
		
		String value = (String) Ognl.getValue("person.username", user);
		System.out.println(value);
	}


	public void testOgnl_03() throws Exception{
		User user = new User();
		Person p = new Person();
		p.setUsername("dallas");
		user.setPerson(p);
		
		String value = (String) Ognl.getValue("#root.person.username",user);
		System.out.println(value);
	}
	
	public static void main(String[] args) throws Exception {
		new OgnlTest().testOgnl_01();
	}
	
	//----------------------------------------------------
	//OGNL CONTEXT使用·
	public void testOgnl_04() throws Exception{
		Person p1 = new Person();
		Person p2 = new Person();
		p1.setUsername("dirk");
		p2.setUsername("terri");
		
		Map<String, Person> context = new HashMap<String, Person>();
		context.put("p1", p1);
		context.put("p2", p2);
		
		String value = (String) Ognl.getValue("p1.username +','+p2.username", context,new Object());
		System.out.println(value);
	}
	
	  public void testOgnl_05() throws Exception{   
	        Person p1 = new Person();   
	        Person p2 = new Person();   
	        p1.setUsername("风");   
	        p2.setUsername("云");   
	           
	        Map<String,Person> context = new HashMap<String,Person>();   
	        context.put("p1", p1);   
	        context.put("p2", p2);   
	           
	        User root = new User();   
	        root.setUsername("雨");   
	           
	        String value = (String)Ognl.getValue("#p1.username + ',' + #p2.username + ',' + username", context, root);   
	        System.out.println(value);   
	    }
	  
	  //-------------------------------------
	  //not important : OGNL赋值操作   java的method反射 get set方法
	   public void testOgnl_06() throws Exception{   
	        User user = new User();   
	           
	        //给root对象的属性赋值,相当于调用user.setUsername()   
	        Ognl.setValue("username", user, "暗之幻影");   
	           
	        System.out.println(user.getUsername());   
	    }   
	  
	  
	    public void testOgnl_07() throws Exception{   
	        User user = new User();   
	  
	        Map<String, User> context = new HashMap<String, User>();   
	        context.put("u", user);   
	           
	        //给context中的对象属性赋值,相当于调用user.setUsername()   
	        Ognl.setValue("#u.username", context, new Object(), "暗之幻影");   
	           
	        System.out.println(user.getUsername());   
	    }   
	  
	    public void testOgnl_08() throws Exception{   
	        User user = new User();   
	           
	        Map<String, User> context = new HashMap<String, User>();   
	        context.put("u", user);   
	           
	        //给context中的对象属性赋值,相当于调用user.setUsername()   
	        //在表达式中使用=赋值操作符来赋值   
	        Ognl.getValue("#u.username = '暗之幻影'",context, new Object());   
	           
	        System.out.println(user.getUsername());   
	    }   
	    public void testOgnl_09() throws Exception{   
	        User user = new User();   
	        Person p = new Person();   
	           
	        Map<String,Object> context = new HashMap<String,Object>();   
	        context.put("u", user);   
	        context.put("p", p);   
	           
	        //给context中的对象属性赋值,相当于调用user.setUsername()   
	        //在表达式中使用=赋值操作符来赋值   
	        Ognl.getValue("#u.username = '风',#p.username = '云'",context, new Object());   
	           
	        System.out.println(user.getUsername()+","+p.getUsername());   
	    }   
	    
	  //--------------------------------------
	  //not important 使用OGNL调用对象的方法
	    public void testOgnl_10() throws Exception{   
	        User user = new User();   
	        user.setUsername("暗之幻影");   
	           
	        String value = (String)Ognl.getValue("getUsername()", user);   
	        System.out.println(value);   
	    }   
	       
	    public void testOgnl_11() throws Exception{   
	        User user = new User();   
	           
	        Ognl.getValue("setUsername('暗之幻影')", user);   
	        System.out.println(user.getUsername());   
	    }   
}
 

OGNL 入门教程

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

推荐文章
3 OGNL
4 OGNL
5 ognl
6 ognl
7 OGNL
8 OGNL
9 OGNL
10 OGNL
11 OGNL
12 OGNL
13 ognl
14 OGNL
15 OGNL
16 OGNL
17 OGNL
18 OGNL
19 OGNL
20 OGNL
编辑推荐
1 OGNL
Struts2.1 OGNL 表达式 学习笔记 Java代码 <%@ page language="java" import="java.util.*" page
2 OGNL
1.访问值栈中的action的普通属性: username = <s:property value="username"/>,图解如下:
3 Ognl
Property(获取数据) <!-- 默认对标签进行转义,可以自己设置不转义 --> <s:property value
OGNL提供的扩展方式,见官网:http://commons.apache.org/proper/commons-ognl/developer-guide.html
近期项目用到ognl,才发现我对ognl不太熟悉,特意温习下: ognl的语法 基本的OGNL语法是十分简单的,
OGNL是通常要结合Struts 2的标志一起使用,如<s:property value="xx" /> 等。大家经常遇到的
OGNL的用法 OGNL是通常要结合Struts 2的标志一起使用,如<s:property value="xx" />等。大家
原文地址:http://www.blogjava.net/max/archive/2007/04/28/114417.html OGNL是通常要结合Struts 2
OGNL是通常要结合Struts 2的标志一起使用,如<s:property value="xx" /> 等。大家经常遇到的
OGNL的用法 OGNL是通常要结合Struts 2的标志一起使用,如<s:property value="xx" />等。大家
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号