【问题标题】:@PostConstruct method init() is never invoked on a ManagedBean@PostConstruct 方法 init() 永远不会在 ManagedBean 上调用
【发布时间】:2014-07-25 13:38:31
【问题描述】:

我仍然是 JSF 编程的初学者,我正在尝试做一个小例子来了解它是如何工作的。 我面临的问题是从未调用托管 bean 的 @PostConstruct 方法(其中的实例从未进行过,并且其中的 println 没有显示任何内容) 我尝试了各种托管 bean(Session、Request...),但总是出现同样的问题!

我的托管 bean:

@ManagedBean(name = "helloWorldMBean")
@SessionScoped
public class HelloWorldMBean implements Serializable {

private static final long serialVersionUID = 1L;
private PortletRequest request;
private String nom;
private String prenom;
private String complement;
private BigDecimal age;
private String year;

/* getters and setters */

@PostConstruct
public void init() {
    System.out.println("Hi !");
    if (request == null) {
        request = (PortletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
    }
    complement = "...";
    nom = "Init";
    System.out.println("Comp : " + complement);
}

【问题讨论】:

  • 我假设您在 jsf 页面中使用 EL 引用 bean?
  • 嗨 kharyam,是的,我在 jsf 页面中使用它,如下所示:
    我对portlet 一无所知,但除此之外,我看不到任何错误。您使用的是什么 JSF 版本?你的代码在哪台机器上运行?您的进口商品是什么样的?你的 faces-config 是什么样的?您如何尝试访问该网页?

标签: jsf jsf-2 postconstruct


【解决方案1】:

感谢您的 cmets。 我刚刚发现我的项目缺少什么:它是 jboss-deployment-structure.xml ! 我将它与依赖项一起添加,它可以工作,虽然我还不明白。

【讨论】:

    猜你喜欢
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    • 2017-01-19
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多