Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 在JSF托管bean的构造函数中访问会话bean数据_Jsf 2_Managed Bean_Managed Property - Fatal编程技术网

Jsf 2 在JSF托管bean的构造函数中访问会话bean数据

Jsf 2 在JSF托管bean的构造函数中访问会话bean数据,jsf-2,managed-bean,managed-property,Jsf 2,Managed Bean,Managed Property,我试图访问托管bean构造函数中的会话bean数据。为此,我使用@ManagedProperty注释如下。当我尝试在构造函数中访问时,它给出了java.lang.NullPointerException,并且同一段代码可以在另一个函数中访问。可能我需要为构造函数做一些不同的事情。有人能告诉我需要做什么吗 @ManagedProperty(value="#{sessionBean}") private SelectCriteriaBean sessionData; // This is con

我试图访问托管bean构造函数中的会话bean数据。为此,我使用
@ManagedProperty
注释如下。当我尝试在构造函数中访问时,它给出了
java.lang.NullPointerException
,并且同一段代码可以在另一个函数中访问。可能我需要为构造函数做一些不同的事情。有人能告诉我需要做什么吗

@ManagedProperty(value="#{sessionBean}")
private SelectCriteriaBean sessionData; 

// This is contructor
public ModifyBusinessProcessBean() {
  logger.debug(getSessionData().getSelectedBusinessProcessLevelZero());     
}

// Another Function where the same code doesn't give error
public anotherFunction() {
  logger.debug(getSessionData().getSelectedBusinessProcessLevelZero());     
}

您不应该在构造函数中使用
@ManagedProperty
,因为它尚未设置。创建托管bean时,首先调用其构造函数,然后使用setter设置托管属性。您应该使用带有
@PostConstruct
注释的方法,因为它是在设置属性后调用的:

@PostConstruct
public void init() {
  logger.debug(getSessionData().getSelectedBusinessProcessLevelZero());
}

您不应该在构造函数中使用
@ManagedProperty
,因为它尚未设置。创建托管bean时,首先调用其构造函数,然后使用setter设置托管属性。您应该使用带有
@PostConstruct
注释的方法,因为它是在设置属性后调用的:

@PostConstruct
public void init() {
  logger.debug(getSessionData().getSelectedBusinessProcessLevelZero());
}

这是预期的行为

@PostConstruct
方法在bean构造和注入依赖项(如
@ManagedProperty
)之后立即执行。所以您的依赖项在构造函数中根本不可用

使用
@PostConstruct
注释方法并引用依赖项所需的操作是一种标准方式:

@PostConstruct
public void init() {
    injectedDependency.performOperation();
}

这是预期的行为

@PostConstruct
方法在bean构造和注入依赖项(如
@ManagedProperty
)之后立即执行。所以您的依赖项在构造函数中根本不可用

使用
@PostConstruct
注释方法并引用依赖项所需的操作是一种标准方式:

@PostConstruct
public void init() {
    injectedDependency.performOperation();
}

哈行动中的并发:)哈!操作中的并发:)