gpt4 book ai didi

java - 通过@ManagedBean调用托管bean时为空

转载 作者:太空宇宙 更新时间:2023-11-04 14:23:49 26 4
gpt4 key购买 nike

我在 session 范围内有两个托管 bean。第一个是简单的元素列表。

@ManagedBean (name = TrainList.BEAN_NAME)
@SessionScoped
public class TrainList extends ListBasic<TrainObj> {

private static final long serialVersionUID = 1L;
public static final String BEAN_NAME = "trainList";

public TrainList () {
super();
}
}

第二个表示列表中特定记录的详细信息,并在用户单击第一个列表中的记录后调用。

@ManagedBean (name = TrainForm.BEAN_NAME)
@SessionScoped
public class TrainForm extends TrainObj {
private static final Logger logger = Logger.getLogger(TrainForm.class.getName());
public static final String BEAN_NAME = "trainForm";

@ManagedProperty(value = "#{trainList}")
private TrainList trainList; /* + getter and setter */


public TrainForm () {
super();
}

public void refreshList(){
if (trainList != null) {
logger.debug(" trainlist is not null");
trainList.refreshList();
}
else {
logger.debug(" trainlist is NULL");
}
}

因此列表 bean 在第二个之前初始化。但是当从第二个bean访问第一个bean时仍然得到null?

[2014-11-12 13:18] DEBUG [http-apr-8080-exec-7] - com.kropla.TrainForm.update(TrainForm.java:xx) - trainlist is NULL

出了什么问题?

[请不要投反对票 - 我已经搜索了答案,但尚未找到正确/合适的答案]

我可以列出所有托管 bean ( https://stackoverflow.com/a/15503044/2303190 ),并且该 bean 已在列表中。但为什么我得到空?

最佳答案

尝试像这样获取bean。我在我的应用程序中使用了下面的代码,它可以工作,但是我使用 @ViewScoped 你的是 SessionScoped,尝试一下它可能会工作。

FacesContext context = FacesContext.getCurrentInstance();
TrainList trainList = context.getApplication().evaluateExpressionGet(context, "#{trainList}",TrainList.class);

关于java - 通过@ManagedBean调用托管bean时为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26886908/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com