相关疑难解决方法(0)

Java EE 6 @ javax.annotation.ManagedBean与@ javax.inject.Named vs. @ javax.faces.ManagedBean

我觉得Java EE 6规范有点乱.有几组注释.

我们有javax.ejb类似于@Stateful@Stateless创建EJB的注释.

还有一个@javax.annotation.ManagedBean用于创建托管bean.

javax.enterprise.context喜欢@SessionScoped和注释中有注释@RequestScoped.

更重要的是也有@ManagedBean@SessionScoped/ @RequestScoped在注释javax.faces.bean包.

为了使事件更复杂,有一个javax.inject@Named注释的包.

有人可以描述一下他们之间的关系吗?

我在哪里可以使用@EJB,@Inject@ManagedPropery注入其他豆类?

java java-ee cdi java-ee-6

107
推荐指数
3
解决办法
4万
查看次数

支持bean(@ManagedBean)或CDI Beans(@Named)?

我刚开始阅读Core JavaServer Faces,第3版.他们这样说(强调我的):

对于可以在JSF页面中使用的bean,有两种不同的机制,CDI bean和JSF托管bean,这是一个历史事故.我们建议您使用CDI bean,除非您的应用程序必须在像Tomcat这样的普通servlet运行器上运行.

为什么?他们没有提供任何理由.我一直在使用@ManagedBean在GlassFish 3上运行的原型应用程序中的所有bean,我还没有发现任何问题.我不介意迁移@ManagedBean@Named,但我想知道为什么我应该打扰.

jsf java-ee cdi jsf-2

106
推荐指数
3
解决办法
7万
查看次数

CDI @Named bean中的ManagedProperty返回null

我正在尝试处理@ManagedProperty但没有成功!

我一直在关注这个指南,看起来并不难.但我的代码根本行不通!

这是一个小片段

@ManagedBean
@SessionScoped
public class LoginBean {

@EJB
private LoginUserLocal loginUser;
private boolean loggedIn = false;
private User user;
private StreamedContent image;
.
.
.
//--
@Named(value = "messagesBean")
@RequestScoped
public class MessagesBean {

@ManagedProperty(value = "#{loginBean}")
private LoginBean loginBean;

public LoginBean getLoginBean() {
    return loginBean;
}

public void setLoginBean(LoginBean loginBean) {
    this.loginBean = loginBean;
}

public String getUser() {
    System.err.println(loginBean == null);
    return loginBean.getUser().getUsername();
}
Run Code Online (Sandbox Code Playgroud)

这段代码给了我一个NullPointerException,说loginBean为null!

有什么建议吗?

jsf ejb cdi managed-bean jboss-weld

20
推荐指数
1
解决办法
1万
查看次数

将 @SessionScoped CDI bean 注入 JSF @ManagedBean 后实例为 null

我有: - 存储库类:

@SessionScoped
public class EmployeeRepository {
    @PersistenceContext
    EntityManager entityManager;
    public List<Employee> getEmployees(){
        TypedQuery<Employee> qu = entityManager.createQuery("select * from Employee", Employee.class);
        List<Employee> emp2 = qu.getResultList();
        return emp2;
    }
}
Run Code Online (Sandbox Code Playgroud)

托管 Bean:

@ManagedBean(name = "helloWorldBean")
public class HelloWorldBean {
    @Inject
    private EmployeeRepository employeerepo;
    public String getMsg() {
        return "Hallo";
    }
    public String getEmployees() {
        return String.valueOf(employeerepo.getEmployees().size());
    }
}
Run Code Online (Sandbox Code Playgroud)

和一个 JSF 页面:

<h:head>
    <title>JavaCodeGeeks</title>
</h:head>
<h:body>
    - Message : <h:outputText value="#{helloWorldBean.msg}" />
    - Employee count : <h:outputText value="#{helloWorldBean.employees}" />
</h:body> …
Run Code Online (Sandbox Code Playgroud)

jsf inject cdi

1
推荐指数
1
解决办法
933
查看次数

标签 统计

cdi ×4

jsf ×3

java-ee ×2

ejb ×1

inject ×1

java ×1

java-ee-6 ×1

jboss-weld ×1

jsf-2 ×1

managed-bean ×1