2012-06-28 90 views
0

我想问你是否可以为bean的子属性注入一个值。如何将值注入到bean的子属性(不带注释)?

这是我想做的事情,但是Eclipse IDE与抱怨:

Bean属性beanB.subprop不是父类paq.paq.BeanA发现

<managed-bean> 
    <managed-bean-name>beanA</managed-bean-name> 
    <managed-bean-class>paq.paq.BeanA</managed-bean-class> 
    <managed-bean-scope>session</managed-bean-scope> 
     <managed-property> 
      <property-name>beanB.subprop</property-name> 
      <value>Hello!</value> 
     </managed-property>   
</managed-bean> 



public class BeanA implements Serializable { 

    public BeanB beanB = null;  

    public Skin getBeanB() { 
     if (this.beanB == null) { 
      this.beanB = new BeanB(); 
     } 
     return this.beanB; 
    }  

    public void setBeanB(BeanB beanB) {  
     this.beanB = beanB; 
    } 

} 


public class BeanB implements Serializable { 

    public String subprop = null;  

    public String getSubprop() { 
     return this.subprop; 
    }  

    public void setSubprop(String subprop) {   
     this.subprop = subprop; 
    } 

} 

谢谢!

回答

0

每个嵌套的bean也需要声明为一个托管bean。您需要将其注入嵌套的Bean,然后将嵌套的Bean本身注入到主Bean中。

<managed-bean> 
    <managed-bean-name>beanA</managed-bean-name> 
    <managed-bean-class>paq.paq.BeanA</managed-bean-class> 
    <managed-bean-scope>session</managed-bean-scope> 
    <managed-property> 
     <property-name>beanB</property-name> 
     <value>#{beanB}</value> 
    </managed-property>   
</managed-bean> 
<managed-bean> 
    <managed-bean-name>beanB</managed-bean-name> 
    <managed-bean-class>paq.paq.BeanB</managed-bean-class> 
    <managed-bean-scope>session</managed-bean-scope> 
    <managed-property> 
     <property-name>subprop</property-name> 
     <value>Hello!</value> 
    </managed-property>   
</managed-bean>