<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Vincent.Chan‘s Blog

    常用鏈接

    統計

    積分與排名

    網站

    最新評論

    [Jakarta Commons筆記] 代碼范例 - BeanUtils

    假定我們有如下兩個標準的JavaBean

     

    /** Address.java */

     

    package sean.study.commons.beanutils;

     

    public class Address {

     

        private String zipCode;

        private String addr;

        private String city;

        private String country;

     

        public Address() {

        }

     

        public Address(String zipCode, String addr, String city, String country) {

            this.zipCode = zipCode;

            this.addr = addr;

            this.city = city;

            this.country = country;

        }

     

        public String getAddr() {

            return addr;

        }

     

        public void setAddr(String addr) {

            this.addr = addr;

        }

     

        public String getCity() {

            return city;

        }

     

        public void setCity(String city) {

            this.city = city;

        }

     

        public String getCountry() {

            return country;

        }

     

        public void setCountry(String country) {

            this.country = country;

        }

     

        public String getZipCode() {

            return zipCode;

        }

     

        public void setZipCode(String zipCode) {

            this.zipCode = zipCode;

        }

     

    }

     

    /** Customer.java */

     

    package sean.study.commons.beanutils;

     

    public class Customer {

     

        private long id;

        private String name;

        private Address[] addresses;

     

        public Customer() {

        }

     

        public Customer(long id, String name, Address[] addresses) {

            this.id = id;

            this.name = name;

            this.addresses = addresses;

        }

     

        public Address[] getAddresses() {

            return addresses;

        }

     

        public void setAddresses(Address[] addresses) {

            this.addresses = addresses;

        }

     

        public long getId() {

            return id;

        }

     

        public void setId(long id) {

            this.id = id;

        }

     

        public String getName() {

            return name;

        }

     

        public void setName(String name) {

            this.name = name;

        }

     

    }

     

     

    我們來看看通常我們是怎樣利用Commons BeanUtils來完成一些基本的JavaBeanDynaBean操作:

     

    package sean.study.commons.beanutils;

     

    import org.apache.commons.beanutils.BasicDynaBean;

    import org.apache.commons.beanutils.BasicDynaClass;

    import org.apache.commons.beanutils.DynaBean;

    import org.apache.commons.beanutils.DynaProperty;

    import org.apache.commons.beanutils.PropertyUtils;

    import org.apache.commons.lang.StringUtils;

     

    public class BeanUtilsUsage {

     

        public static void main(String[] args) throws Exception {

            demoNormalJavaBeans();

            demoDynaBeans();

        }

     

        public static void demoNormalJavaBeans() throws Exception {

     

            System.out.println(StringUtils.center(" demoNormalJavaBeans ", 40, "="));

           

            // data setup

            Address addr1 = new Address("CA1234", "xxx", "Los Angeles", "USA");

            Address addr2 = new Address("100000", "xxx", "Beijing", "China");

            Address[] addrs = new Address[2];

            addrs[0] = addr1;

            addrs[1] = addr2;

            Customer cust = new Customer(123, "John Smith", addrs);

           

            // accessing the city of first address

            String cityPattern = "addresses[0].city";

            String name = (String) PropertyUtils.getSimpleProperty(cust, "name");

            String city = (String) PropertyUtils.getProperty(cust, cityPattern);

            Object[] rawOutput1 = new Object[] { "The city of customer ", name,

                    "'s first address is ", city, "." };

            System.out.println(StringUtils.join(rawOutput1));

           

            // setting the zipcode of customer's second address

            String zipPattern = "addresses[1].zipCode";

            if (PropertyUtils.isWriteable(cust, zipPattern)) {

                System.out.println("Setting zipcode ...");

                PropertyUtils.setProperty(cust, zipPattern, "200000");

            }

            String zip = (String) PropertyUtils.getProperty(cust, zipPattern);

            Object[] rawOutput2 = new Object[] { "The zipcode of customer ", name,

                    "'s second address is now ", zip, "." };

            System.out.println(StringUtils.join(rawOutput2));

           

            System.out.println();

        }

     

        public static void demoDynaBeans() throws Exception {

     

            System.out.println(StringUtils.center(" demoDynaBeans ", 40, "="));

           

            // creating a DynaBean

            DynaProperty[] dynaBeanProperties = new DynaProperty[] {

                    new DynaProperty("name", String.class),

                    new DynaProperty("inPrice", Double.class), 

                    new DynaProperty("outPrice", Double.class),

            };

            BasicDynaClass cargoClass = new BasicDynaClass("Cargo", BasicDynaBean.class, dynaBeanProperties);

            DynaBean cargo = cargoClass.newInstance();

           

            // accessing a DynaBean

            cargo.set("name", "Instant Noodles");

            cargo.set("inPrice", new Double(21.3));

            cargo.set("outPrice", new Double(23.8));

            System.out.println("name: " + cargo.get("name"));

            System.out.println("inPrice: " + cargo.get("inPrice"));

            System.out.println("outPrice: " + cargo.get("outPrice"));

     

            System.out.println();

        }

     

    }

     

    上述代碼運行結果如下:

     

    ========= demoNormalJavaBeans ==========

    The city of customer John Smith's first address is Los Angeles.

    Setting zipcode ...

    The zipcode of customer John Smith's second address is now 200000.

     

    ============ demoDynaBeans =============

    name: Instant Noodles

    inPrice: 21.3

    outPrice: 23.8

     

    以上代碼簡單說明了一下BeanUtils常見的基本用法,還有很多高階或者更具體的應用及原理,這里無法一一講到,而且有很多筆者也不熟悉、不了解,對BeanUtils的講解就到此吧。如果你有興趣,或者還不是很清楚為什么像這樣動態的或者說松散的訪問JavaBean是有必要的,可以把Struts的源碼拿下來研究一下,看看FormBean以及DynaActionForm這些是如何被動態創建的,一定會有收獲。

     

    posted on 2006-03-10 23:10 Vincent.Chen 閱讀(117) 評論(0)  編輯  收藏 所屬分類: Java

    主站蜘蛛池模板: 国产视频精品免费| 亚洲AV色无码乱码在线观看| 国产免费黄色大片| 6080午夜一级毛片免费看6080夜福利| 久久水蜜桃亚洲AV无码精品| 亚洲人成电影网站| 久久久久亚洲av无码专区蜜芽| 亚洲成?v人片天堂网无码| 成人女人A级毛片免费软件| 国产精品白浆在线观看免费| 国产精品hd免费观看| 国产精品无码亚洲精品2021| tom影院亚洲国产一区二区| 亚洲免费视频网站| 久久久久亚洲AV成人无码| 国产啪亚洲国产精品无码| 又粗又硬免费毛片| 国产又粗又长又硬免费视频| 丁香花在线观看免费观看| 2019中文字幕在线电影免费 | 免费看韩国黄a片在线观看| 免费精品无码AV片在线观看| 中文字幕在线成人免费看| 一级做a爰片久久毛片免费看| mm1313亚洲国产精品无码试看| 精品国产日韩久久亚洲| 亚洲中字慕日产2021| 亚洲精品国产成人| 亚洲午夜一区二区电影院| 亚洲高清日韩精品第一区| 亚洲精选在线观看| 亚洲成年人免费网站| 亚洲精品第五页中文字幕| 亚洲二区在线视频| 亚洲成人网在线播放| 亚洲区视频在线观看| 激情亚洲一区国产精品| 亚洲av无一区二区三区| 最新亚洲人成无码网www电影| 国产成人+综合亚洲+天堂| 免费大片av手机看片高清|