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


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


    網站導航:
     
    主站蜘蛛池模板: 亚洲性无码一区二区三区| 亚洲an天堂an在线观看| 亚洲精华国产精华精华液| 波多野结衣在线免费观看| 亚洲白嫩在线观看| 精品一区二区三区免费毛片爱| 亚洲Aⅴ无码专区在线观看q| 全部免费毛片在线播放| 亚洲国产第一页www| 鲁大师在线影院免费观看| 亚洲色欲www综合网| 国产成人免费网站| 亚洲男人的天堂网站| 国产无遮挡又黄又爽免费视频| 国产精品亚洲а∨无码播放不卡| 国产免费无遮挡精品视频| 国产精品视频全国免费观看 | 国产精品亚洲天堂| 国产精品四虎在线观看免费| 色费女人18女人毛片免费视频| 亚洲精品成人片在线观看| 99久久99这里只有免费的精品| 亚洲国产成人片在线观看无码| 99久久精品免费视频| 亚洲www77777| 亚洲免费日韩无码系列| 国产情侣久久久久aⅴ免费| 亚洲精品欧洲精品| 国产乱子影视频上线免费观看| 一级白嫩美女毛片免费| 久久久久亚洲AV片无码| 妞干网手机免费视频| 国产精品免费久久久久久久久| 亚洲精品在线播放视频| 四虎影永久在线高清免费| 久久狠狠躁免费观看2020| 亚洲美国产亚洲AV| 亚洲精品狼友在线播放| 四虎免费在线观看| 国产一区二区三区免费| 亚洲精华国产精华精华液好用|