论坛首页 入门技术论坛

JSF注入

浏览 3688 次
锁定老帖子 主题:JSF注入
该帖已经被评为新手帖
作者 正文
   发表时间:2010-04-14   最后修改:2010-04-14

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;
}

   发表时间:2010-04-20  
我們用的是1.2的,這個注釋的還沒有用過
0 请登录后投票
   发表时间:2010-07-11  
能不能注入受管的bean?譬如注入某SessionScoped的managedbean.
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics