posts - 64,  comments - 9,  trackbacks - 0

          http://depravedangel.javaeye.com/blog/377740

          package org.darkness.ognl.test;

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

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

          import org.darkness.oa.model.Person;
          import org.darkness.oa.model.User;

          public class OgnlTest extends TestCase {
           
           // ***************** root對象的概念 ******************* //
           public void testOgnl_01() throws Exception{
            User user = new User();
            user.setUsername("暗之幻影");
            
            //相當于調(diào)用user.getUsername()方法
            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.setName("暗之幻影");
            user.setPerson(p);
            
            //相當于調(diào)用user.getPerson().getName()方法
            String value = (String)Ognl.getValue("person.name", user);
            System.out.println(value);
           }
           
           public void testOgnl_03() throws Exception{
            User user = new User();
            Person p = new Person();
            p.setName("暗之幻影");
            user.setPerson(p);
            
            //可以使用#root來引用根對象,相當于調(diào)用user.getPerson().getName()方法
            String value = (String)Ognl.getValue("#root.person.name", user);
            System.out.println(value);
           }
           
           // *********************** context的概念 **********************//
           public void testOgnl_04() throws Exception{
            Person p1 = new Person();
            Person p2 = new Person();
            p1.setName("風(fēng)");
            p2.setName("云");

            Map<String,Person> context = new HashMap<String,Person>();
            context.put("p1", p1);
            context.put("p2", p2);
            
            // 需要加上#才表示到context中取數(shù)據(jù),否則表示從根目錄下取值
            String value = (String)Ognl.getValue("#p1.name + ',' + #p2.name", context, new Object());
            System.out.println(value);
           }
           
           public void testOgnl_05() throws Exception{
            Person p1 = new Person();
            Person p2 = new Person();
            p1.setName("風(fēng)");
            p2.setName("云");
            
            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.name + ',' + #p2.name + ',' + username", context, root);
            System.out.println(value);
           }
           
           // ******************* OGNL賦值操作 ************************//
           public void testOgnl_06() throws Exception{
            User user = new User();
            
            //給root對象的屬性賦值,相當于調(diào)用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中的對象屬性賦值,相當于調(diào)用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中的對象屬性賦值,相當于調(diào)用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中的對象屬性賦值,相當于調(diào)用user.setUsername()
            //在表達式中使用=賦值操作符來賦值
            Ognl.getValue("#u.username = '風(fēng)',#p.name = '云'",context, new Object());
            
            System.out.println(user.getUsername()+","+p.getName());
           }
           
           //****************** 使用OGNL調(diào)用對象的方法 **********************//
           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調(diào)用類變量、靜態(tài)方法 *************************//
           public void testOgnl_12() throws Exception{
            User user = new User();
            
            Ognl.getValue("setUsername('暗之幻影')", user);
            Ognl.getValue("@System@out.println(username)", user);
           }
           
           public void testOgnl_13() throws Exception{
            User user = new User();
            
            Ognl.getValue("setUsername('暗之幻影')", user);
            Ognl.getValue("@System@out.println(@org.darkness.struts2.test.Utils@toLowerCase(username))", user);
           }
           
           // ********************* OGNL中的this表達式 **********************//
           public void testOgnl_14() throws Exception{
            Object root = new Object();
            Map context = new HashMap();
            
            List values = new ArrayList();
            for(int i=0; i<11; i++){
             values.add(i);
            }
            context.put("values", values);
            
            Ognl.getValue("@System@out.println(#values.size.(#this > 10 ? \"大于10\" : '不大于10'))", context, root);
            
           }
           
           public void testOgnl_15() throws Exception{
            User user = new User();
            
            Ognl.getValue("setUsername('暗之幻影')", user);
            Ognl.getValue("@System@out.println(#this.username)", user);
           }
           
           public void testOgnl_16() throws Exception{
            User user = new User();
            
            Ognl.getValue("setUsername('暗之幻影')", user);
            Ognl.getValue("@System@out.println(username.(#this.toLowerCase()))", user);
           }
           
           // ******************* 如何把表達式的解釋結(jié)果作為另外一個表達式,OGNL中括號的使用 **********************//
           public void testOgnl_17() throws Exception{
            Object root = new Object();
            Map context = new HashMap();
            User u = new User();
            u.setUsername("暗之幻影");
            context.put("u", u);
            context.put("fact", "username");
            
            /**
             * 1、首先把#fact表達式進行解釋,得到一個值:username
             * 2、解釋括號中的表達式#u,其結(jié)果是user對象
             * 3、把括號中表達式的結(jié)果作為root對象,解釋在第一步中得到的結(jié)果(即把第一步的結(jié)果看成另外一個表達式)
             */
            String value = (String)Ognl.getValue("#fact(#u)", context, root);
            System.out.println(value);
           }
           
           public void testOgnl_18() throws Exception{
            Person person = new Person();
            Map context = new HashMap();
            User u = new User();
            u.setUsername("暗之幻影");
            context.put("u", u);
            
            /**
             * 相當于調(diào)用person這個根對象的fact方法,并把#u的解釋結(jié)果作為參數(shù)傳入此方法
             */
            String value = (String)Ognl.getValue("fact(#u)", context, person);
            System.out.println(value); //輸出是 "暗之幻影,"
           }
           
           public void testOgnl_19() throws Exception{
            Person person = new Person();
            Map context = new HashMap();
            User u = new User();
            u.setUsername("暗之幻影");
            context.put("u", u);
            
            /**
             * 1、先計算表達式fact,得到結(jié)果是:username
             * 2、解釋括號中的表達式#u,其結(jié)果是user對象
             * 3、把括號中表達式的結(jié)果作為root對象,解釋在第一步中得到的結(jié)果(即把第一步的結(jié)果看成另外一個表達式)
             */
            String value = (String)Ognl.getValue("(fact)(#u)", context, person);
            System.out.println(value); //輸出"暗之幻影"
           }
           
           // ********************* OGNL訪問集合元素 **************************//
           public void testOgnl_20() throws Exception{
            Object root = new Object();
            Map context = new HashMap();
            
            //用OGNL創(chuàng)建List對象
            List listvalue = (List)Ognl.getValue("{123,'暗之幻影','風(fēng)之水影'}", context, root);
            context.put("listvalue", listvalue);
            
            //用OGNL創(chuàng)建數(shù)組
            int[] intarray= (int[])Ognl.getValue("new int[]{23,45,67}", context, root);
            context.put("intarray", intarray);
            
            //用OGNL創(chuàng)建Map對象
            Map mapvalue = (Map)Ognl.getValue("#{'listvalue':#listvalue,'intarray':#intarray}", context, root);
            context.put("mapvalue", mapvalue);
            
            Ognl.getValue("@System@out.println(#listvalue[0])", context, root);
            Ognl.getValue("@System@out.println(#intarray[1])", context, root);
            Ognl.getValue("@System@out.println(#mapvalue['intarray'][2])", context, root);
            Ognl.getValue("@System@out.println(#mapvalue.intarray[0])", context, root);
           }
          }

          posted on 2009-10-19 10:16 super_nini 閱讀(1504) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          <2009年10月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿

          隨筆檔案

          文章檔案

          相冊

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 瑞安市| 蕲春县| 拜城县| 仪征市| 莱芜市| 南城县| 漾濞| 屏东市| 南宁市| 祁连县| 许昌市| 麻栗坡县| 博兴县| 楚雄市| 米泉市| 二连浩特市| 如皋市| 云阳县| 牙克石市| 利津县| 龙岩市| 沁阳市| 嘉禾县| 无棣县| 磐安县| 东海县| 梁河县| 巴东县| 壶关县| 札达县| 隆回县| 南和县| 尉氏县| 沙雅县| 沂源县| 筠连县| 时尚| 静海县| 云霄县| 宜良县| 庆安县|