<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)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 免费女人18毛片a级毛片视频| 永久免费视频网站在线观看| 免费**毛片在线播放直播| 亚洲最大av资源站无码av网址| 国产精品久久永久免费| 亚洲人成人网毛片在线播放| 日韩高清在线高清免费| 无套内射无矿码免费看黄| 亚洲毛片网址在线观看中文字幕 | 在线观看AV片永久免费| 亚洲一级毛片中文字幕| 日本免费一区二区三区最新| 国产精品日本亚洲777| 青青草原亚洲视频| 久久久久久成人毛片免费看| 亚洲图片中文字幕| 午夜无遮挡羞羞漫画免费| 337P日本欧洲亚洲大胆艺术图| 亚洲av无码天堂一区二区三区| 国产在线精品观看免费观看| 亚洲一区二区影院| 在线观看免费宅男视频| 无码人妻一区二区三区免费视频 | 国产免费一区二区三区不卡| 亚洲一区二区三区夜色| 女性自慰aⅴ片高清免费| 日本一区二区三区在线视频观看免费| 亚洲欧洲日产国码无码网站| 91视频免费网址| 亚洲s码欧洲m码吹潮| 国产精品亚洲一区二区三区在线| 久久久久久免费视频| 成在线人直播免费视频| 亚洲国产成人久久精品app| 国产美女精品久久久久久久免费| 中国精品一级毛片免费播放| 亚洲乱码一区av春药高潮| 亚洲第一页日韩专区| 国产大片线上免费观看| 美女巨胸喷奶水视频www免费| 国产精品亚洲精品青青青 |