JSF注入

JSF1.2依赖配置文件faces-config.xml 来实现 MBean的管理,到了2.0,我们可以使用注入的方式实现。

0.唠叨
JSR299规定了如何编写注入,但是JBoss的例子中使用 @Named,在我的程序中是失灵的,我必须使用@ManagedBean来实现。JavaEE6给了规范,为什么大家不按照统一的名字来实现内?

1.MBean的声明
JSF1.2实现MBean管理:
<managed-bean>
    <managed-bean-name>usersBean</managed-bean-name>
    <managed-bean-class>com.radvision.icm.faces.bean.directory.webbean.UsersBean</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>

JSF2.0实现注入声明:
import javax.faces.bean.*;

@ManagedBean
@ViewScoped
public class UsersBean

2.实现页面级范围MBean
JSF1.2/Richfaces3.3.x或更早版本:
只有application,session,request三个级别的MBean范围,若实现page级别的,需要在jsp/jsf/xhtml页面上声明该类为a4j:keepAlive。

JSF2.0的scope范围:
@ApplicationScoped
@CustomScoped
@NoneScoped
@RequestScoped
@SessionScoped
@ViewScoped
其中@ViewScoped用来实现页面级MBean的,可以替代a4j:keepAlive

3.实现对MBean的引用
JSF1.2可以从context中获取三个级别的MBean:
final ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
return (HttpServletRequest) ;

(BeanName)externalContext.getRequest().getAttribute(beanName);
(BeanName)externalContext.getSession(true).getAttribute(beanName)
(BeanName)externalContext.getApplicationMap().get(beanName);


JSF2.0可以在使用MBean的类中实现依赖注入:

@ManagedProperty(value="#{beanName}")
private BeanName beanName;

public BeanName getBeanName() {
    return beanName;
}

public void setBeanName(BeanName beanName) {
    this.beanName = beanName;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值