从@ManagedBean更改为@Named不起作用

时间:2018-12-25 19:04:25

标签: jsf glassfish cdi

我正在尝试建立一个简单的JSF项目。

我创建了一个新的Dynamic Web Project并调整了其构面:

enter image description here

之后,我添加了MessageServerBean类:

import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@SessionScoped
@ManagedBean
public class MessageServerBean implements Serializable {

    private static final long serialVersionUID = 1L;

    public String getMessage() {
        return "Hello World!";
    }
}

还有一个XHTML文件:

<h:body>

    Hello from Facelets
    <br />
    Message is: #{messageServerBean.message}
    <br />
    Message Server Bean is: #{messageServerBean}    

</h:body>

当我执行它时,一切都会按预期进行:

Hello from Facelets 
Message is: Hello World! 
Message Server Bean is: bean.MessageServerBean@30ecf01b:

但是从JSF Bean更改为CDI Bean之后:

import java.io.Serializable;

import javax.enterprise.context.SessionScoped; // changed
import javax.inject.Named; // changed

@SessionScoped
@Named // changed
public class MessageServerBean implements Serializable {

    private static final long serialVersionUID = 1L;

    public String getMessage() {
        return "Hello World!";
    }
}

不再加载Bean中的内容:

Hello from Facelets 
Message is: 
Message Server Bean is:

beans.xml中,Bean-Discovery-Mode设置为all

0 个答案:

没有答案
相关问题