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

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

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

    俊星的BLOG

    我的DWR之DefaultContainer

    DWR中采用DefaultContainer來加載默認的配置信息,下面是我的實現:
    import java.beans.BeanInfo;
    import java.beans.Introspector;
    import java.beans.PropertyDescriptor;
    import java.lang.reflect.Method;
    import java.util.Collection;
    import java.util.HashMap;
    import java.util.Map;

    public class CantainerTest {
        
    public static void main(String[] args) {
            Cantainer cant 
    = new Cantainer();
            
    try {
                cant.addParam(
    "name""can_name");
                cant.addParam(
    "bool""true");
                cant.addParam(
    "age""111");
                cant.addParam(
    "beanOne"new BeanOne());
                cant.addParam(BeanTwo.
    class.getName(), "BeanTwo");
                cant.finishConfig();

                System.out.println(cant.getBean(
    "name"));
                System.out.println(cant.getBean(
    "bool"));
                System.out.println(cant.getBean(
    "age"));
                System.out.println(cant.getBean(
    "beanOne"));
                System.out.println(cant.getBean(BeanTwo.
    class.getName()));

            }
     catch (Exception e) {
                
    // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }

    }


    class Cantainer {
        
    private Map<String, Object> beans = new HashMap<String, Object>();

        
    public void addParam(String key, Object value) throws Exception {
            
    if (value instanceof String) {
                
    try {
                    Class impl 
    = Class.forName((String) value);
                    value 
    = impl.newInstance();
                }
     catch (ClassNotFoundException e) {
                }

            }

            beans.put(key, value);
        }


        
    public void finishConfig() throws Exception {
            Collection
    <Object> col = beans.values();
            
    for (Object obj : col) {
                
    if (!(obj instanceof String)) {
                    
    // 開始自動匹配
                    BeanInfo bi = Introspector.getBeanInfo(obj.getClass());
                    
    for (PropertyDescriptor desc : bi.getPropertyDescriptors()) {
                        Object value 
    = beans.get(desc.getName());
                        
    if (value != null{
                            Method setter 
    = desc.getWriteMethod();
                            Class propType 
    = setter.getParameterTypes()[0];
                            
    boolean invokeFlg = false;
                            
    if (value.getClass().isAssignableFrom(propType)) {
                                invokeFlg 
    = true;
                            }
     else if (propType == Boolean.TYPE && value.getClass() == String.class{
                                value 
    = Boolean.valueOf((String) value);
                                invokeFlg 
    = true;
                            }
     else if (propType == Integer.TYPE && value.getClass() == String.class{
                                value 
    = Integer.valueOf((String) value);
                                invokeFlg 
    = true;
                            }
     else if (propType == Boolean.TYPE && value.getClass() == String.class{
                                value 
    = Boolean.valueOf((String) value);
                                invokeFlg 
    = true;
                            }

                            
    if (invokeFlg) {
                                setter.invoke(obj, 
    new Object[] { value });
                            }

                        }

                    }

                }

            }

        }


        
    public Object getBean(String key) {
            
    return beans.get(key);
        }

    }


    class BeanOne {
        
    public BeanOne() {
            
    super();
            
    this.name = "name";
        }


        
    private String name;

        
    public String getName() {
            
    return name;
        }


        
    public void setName(String name) {
            
    this.name = name;
        }


        
    public String toString() {
            
    return "BeanOne name:" + this.name;
        }

    }


    class BeanTwo {
        
    private BeanOne beanOne;
        
    private boolean bool;
        
    private int age;

        
    public BeanTwo() {
            
    this.beanOne = new BeanOne();
            
    this.bool = false;
            
    this.age = 123;
        }


        
    public BeanOne getBeanOne() {
            
    return beanOne;
        }


        
    public void setBeanOne(BeanOne beanOne) {
            
    this.beanOne = beanOne;
        }


        
    public boolean isBool() {
            
    return bool;
        }


        
    public void setBool(boolean bool) {
            
    this.bool = bool;
        }


        
    public int getAge() {
            
    return age;
        }


        
    public void setAge(int age) {
            
    this.age = age;
        }


        
    public String toString() {
            
    return "BeanTwo beanOne:<" + this.beanOne + "> bool:" + this.bool + " age:" + this.age;
        }

    }

    輸出如下:
    can_name
    true
    111
    BeanOne name:can_name
    BeanTwo beanOne:<BeanOne name:can_name> bool:true age:111

    posted on 2009-05-20 22:45 俊星 閱讀(236) 評論(0)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 亚洲一级视频在线观看| 免费播放美女一级毛片| 手机看片久久国产免费| 一级做a爱过程免费视| 久久亚洲精精品中文字幕| 影音先锋在线免费观看| 国产特黄一级一片免费| va天堂va亚洲va影视中文字幕| 最近免费mv在线观看动漫| 亚洲人成激情在线播放| 亚洲欧洲中文日韩久久AV乱码 | 亚洲白色白色在线播放| 日韩在线免费播放| 久章草在线精品视频免费观看| 亚洲免费在线视频观看| 国产日产亚洲系列| 久久久久国色AV免费看图片| 亚洲黄片手机免费观看| 国产亚洲精aa在线看| 国产亚洲精AA在线观看SEE| 我想看一级毛片免费的| 久久国产乱子伦精品免费不卡| 亚洲日韩精品无码专区加勒比☆ | 在线视频网址免费播放| 亚洲人配人种jizz| 亚洲国产精品无码AAA片| 国产精品成人无码免费| 中文字幕天天躁日日躁狠狠躁免费| 亚洲中文字幕一二三四区| 亚洲欧洲第一a在线观看| 亚洲AV日韩精品一区二区三区 | xxxxx做受大片视频免费| 亚洲精品无码久久久久牙蜜区| 国产亚洲免费的视频看| 亚洲AV日韩精品一区二区三区| 国产香蕉免费精品视频| 免费无码黄网站在线看| 五月天国产成人AV免费观看| 国产午夜亚洲精品国产| 亚洲福利秒拍一区二区| 亚洲AV无码久久精品色欲|