JSF在一个管理Bean中引用另一个管理Bean

JSF在一个管理Bean中引用另一个管理Bean
如果一个管理Bean中的属性和方法跟另一个管理Bean一样,为了代码的重用而不是再次重写相同的代码,我们会想在这个Bean中直接引用那个管理Bean。
看示例:

----1---JavaCode-----
public class PRequestHisIpBean{
// 引用另外的管理Bean
private NetManageBean netmanage ;

public PRequestHisIpBean(){
// 执行引用Bean的方法
if(netmanage!=null)netmanage.manageNet();
}


public NetManageBean getNetmanage() {
if(netmanage==null)netmanage=new NetManageBean();
return netmanage;
}
public void setNetmanage(NetManageBean netmanage) {
this.netmanage = netmanage;
}

}



----2---faces-config.xml---------

<managed-bean>
<managed-bean-name>netmanage</managed-bean-name>
<managed-bean-class>
com.system.NetManageBean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>

<managed-bean>
<managed-bean-name>RequestIp</managed-bean-name>
<managed-bean-class>
com.report.PRequestHisIpBean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>netmanage</property-name>
<value>#{netmanage}</value>
</managed-property>
</managed-bean>



[color=red]注意:现在的netmanage 还是空的,如果直接执行引用Bean的方法
if(netmanage!=null)netmanage.manageNet();
netmanage 是 null ;[/color]
不过可以在初始化NetManageBean 时执行你
想要的方法。只有在当前构造函数执行以后才执行setNetmanage方法,给netmanage赋值。


执行顺序是:
先到构造函数中,但不执行里面的方法,先初始化普通属性,即给属性赋值,然后才
执行构造函数中的方法。
当构造函数执行完成对象生成之后,才初始化本管理Bean中引用的其它管理Bean类的对象,如开始初始化NetManageBean ,给netmanage 赋值。

要想在本类初始化的时候就得到引用的管理Bean的实例,可以改变执行顺序,将本类的构造函数中的方法移到setNetmanage方法中,并在this.netmanage = netmanage;之后执行。
修改 1 的代码为:
----3---JavaCode-----
public class PRequestHisIpBean{
// 引用另外的管理Bean
private NetManageBean netmanage ;

public PRequestHisIpBean(){

}


public NetManageBean getNetmanage() {
if(netmanage==null)netmanage=new NetManageBean();
return netmanage;
}
public void setNetmanage(NetManageBean netmanage) {
this.netmanage = netmanage;
// 执行引用Bean的方法
if(netmanage!=null)netmanage.manageNet();
}

}


这样if(netmanage!=null)netmanage.manageNet();就不会为空了;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值