文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>About Ognl

About Ognl

时间:2010-03-30  来源:qbq

package com.qbq;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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


public class TestOgnl extends TestCase {
    
    private void out(Object obj) {
        System.out.println(obj);
    }

    public void testOgnl001() throws OgnlException {
        User user = new User();
        user.setUsername("John");
        
        String value = (String) Ognl.getValue("username", user);
        out(value);
        assertEquals("John", value);
    }
    
    public void testOgnl002() throws OgnlException {
        User user = new User();
        Person p = new Person();
        p.setName("Mike");
        user.setPerson(p);
        
        String value = (String) Ognl.getValue("person.name", user);
        out(value);
        assertEquals("Mike", value);
    }
    
    public void testOgnl003() throws OgnlException {
        User user = new User();
        Person p = new Person();
        p.setName("Jim");
        user.setPerson(p);
        
        String value = (String) Ognl.getValue("#root.person.name", user);
        out(value);
        assertEquals("Jim", value);
    }
    
    public void testOgnl004() throws OgnlException {
        Person p1 = new Person();
        p1.setName("Jordan");
        Person p2 = new Person();
        p2.setName("Carter");
        
        Map<String, Person> context = new HashMap<String, Person>();
        context.put("p1", p1);
        context.put("p2", p2);
        
        String value = (String) Ognl.getValue("#p1.name + ' , ' + #p2.name", context, new Object());
        out(value);
        assertEquals("Jordan , Carter", value);
    }
    
    public void testOgnl005() throws OgnlException {
        Person p1 = new Person();
        p1.setName("Jordan");
        Person p2 = new Person();
        p2.setName("Carter");
        
        Map<String, Person> context = new HashMap<String, Person>();
        context.put("p1", p1);
        context.put("p2", p2);
        
        User root = new User();
        root.setUsername("Miler");
        
        String value = (String) Ognl.getValue("#p1.name + ' , ' + #p2.name + ' , ' + username", context, root);
        out(value);
        assertEquals("Jordan , Carter , Miler", value);
    }
    
    public void testOgnl006() throws OgnlException {
        User user = new User();
        
        Ognl.setValue("username", user, "John");
        
        out(user.getUsername());
        assertEquals("John", user.getUsername());
    }
    
    public void testOgnl007() throws OgnlException {
        User user = new User();        
        Map<String, User> context = new HashMap<String, User>();
        context.put("u", user);
        
        Ognl.setValue("#u.username", context, new Object(), "John");
                
        out(user.getUsername());
        assertEquals("John", user.getUsername());
    }

    public void testOgnl008() throws OgnlException {
        User user = new User();        
        Map<String, User> context = new HashMap<String, User>();
        context.put("u", user);
        
        Ognl.getValue("#u.username = 'John'", context, new Object());
                
        out(user.getUsername());
        assertEquals("John", user.getUsername());
    }

    public void testOgnl009() throws OgnlException {
        User user = new User();    
        Person person = new Person();
        
        Map<String, Object> context = new HashMap<String, Object>();
        context.put("u", user);
        context.put("p", person);
        
        Ognl.getValue("#u.username = 'John', #p.name = 'Mike'", context, new Object());
                
        out(user.getUsername() + " , " + person.getName());
        assertEquals("John", user.getUsername());
        assertEquals("Mike", person.getName());
    }
    
    public void testOgnl010() throws OgnlException {
        User user = new User();
        user.setUsername("John");
        
        String value = (String) Ognl.getValue("getUsername()", user);
        out(value);
        assertEquals("John", value);
    }

    public void testOgnl011() throws OgnlException {
        User user = new User();
        
        Ognl.getValue("setUsername('John')", user);
        out(user.getUsername());
        assertEquals("John", user.getUsername());
    }
    
    public void testOgnl012() throws OgnlException {
        Object root = new Object();
     Map<String, Object> context = new HashMap<String, Object>();
    
     List<Object> values = new ArrayList<Object>();
     for(int i=0; i<11; i++){
     values.add(i);
     }
     context.put("values", values);
    
     Ognl.getValue("@[email protected](#values.size.(#this > 10 ? \"Bigger than 10\" : 'Not Bigger than 10'))", context, root);
     String value = (String) Ognl.getValue("#values.size.(#this > 10 ? \"Bigger than 10\" : 'Not Bigger than 10')", context, root);
        assertEquals("Bigger than 10", value);
    }
    
    public void testOgnl013() throws Exception{
     User user = new User();
    
     Ognl.getValue("setUsername('John')", user);
     Ognl.getValue("@[email protected](#this.username)", user);
    
     String value = (String) Ognl.getValue("#this.username", user);
        assertEquals("John", value);
    }
    
    public void testOgnl014() throws Exception{
     User user = new User();
    
     Ognl.getValue("setUsername('John')", user);
     Ognl.getValue("@[email protected](username.(#this.toLowerCase()))", user);
    
     String value = (String) Ognl.getValue("username.(#this.toLowerCase())", user);
        assertEquals("john", value);
    }
    
    public void testOgnl015() throws Exception{
        Object root = new Object();
     Map<String, Object> context = new HashMap<String, Object>();
     User u = new User();
     u.setUsername("John");
     context.put("u", u);
     context.put("fact", "username");

     String value = (String)Ognl.getValue("#fact(#u)", context, root);
     out(value);
     assertEquals("John", value);
    }
    
    public void testOgnl016() throws Exception{
     Person person = new Person();
     Map<String, Object> context = new HashMap<String, Object>();
     User u = new User();
     u.setUsername("John");
     context.put("u", u);
    
     /**
     * 相当于调用person这个根对象的fact方法,并把#u的解释结果作为参数传入此方法
     */
     String value = (String)Ognl.getValue("fact(#u)", context, person);
     out(value);
     assertEquals("John", value);
    }
    
    public void testOgnl017() throws Exception{
     Person person = new Person();
     Map<String, Object> context = new HashMap<String, Object>();
     User u = new User();
     u.setUsername("John");
     context.put("u", u);
    
     /**
     * 1、先计算表达式fact,得到结果是:username
     * 2、解释括号中的表达式#u,其结果是user对象
     * 3、把括号中表达式的结果作为root对象,解释在第一步中得到的结果(即把第一步的结果看成另外一个表达式)
     */
     String value = (String)Ognl.getValue("(fact)(#u)", context, person);
     out(value);
     assertEquals("John", value);
    }
    
    public void testOgnl018() throws Exception{
     Object root = new Object();
     Map<String, Object> context = new HashMap<String, Object>();
    
     //用OGNL创建List对象

     List<Object> listvalue = (List<Object>)Ognl.getValue("{100,'one hundred','yibai'}", context, root);
     context.put("listvalue", listvalue);
    
     //用OGNL创建数组

     int[] intarray= (int[])Ognl.getValue("new int[]{1,2,3}", context, root);
     context.put("intarray", intarray);
    
     //用OGNL创建Map对象

     Map<String, Object> mapvalue = (Map<String, Object>)Ognl.getValue("#{'listvalue':#listvalue,'intarray':#intarray}", context, root);
     context.put("mapvalue", mapvalue);
    
     Ognl.getValue("@[email protected](#listvalue[2])", context, root);
     Ognl.getValue("@[email protected](#intarray[0])", context, root);
     Ognl.getValue("@[email protected](#mapvalue['intarray'][1])", context, root);
     Ognl.getValue("@[email protected](#mapvalue.intarray[2])", context, root);
    
     assertEquals("yibai", Ognl.getValue("#listvalue[2]", context, root));
     assertEquals(1, Ognl.getValue("#intarray[0]", context, root));
     assertEquals(2, Ognl.getValue("#mapvalue['intarray'][1]", context, root));
     assertEquals(3, Ognl.getValue("#mapvalue.intarray[2]", context, root));
    }
}

class Person {
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    // For test 016

    public String fact(User user) {
        return user.getUsername();
    }
    // For test 017

    public String fact = "username";
}

class User {
    private String username;
    private Person person;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public Person getPerson() {
        return person;
    }
    public void setPerson(Person person) {
        this.person = person;
    }
}


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载