gpt4 book ai didi

jsf - @ManagedProperty 不反射(reflect)变化并一直返回 null

转载 作者:行者123 更新时间:2023-12-04 22:25:51 25 4
gpt4 key购买 nike

我试图将一个 session 范围的 bean 的值注入(inject)一个 View 范围的 bean,但它一直返回 null,这是一个片段:

import javax.faces.application.FacesMessage;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

//Class for managing the current logged-in user
@ManagedBean(name="user")
@SessionScoped
public class User implements Serializable{

private String userName;

public void setUserName(String userName) {
this.userName = userName;
}
public String getUserName() {
return this.userName;
}

它用于:

@ManagedBean(name="databrowser")
@ViewScoped
public class dataBrowser implements Serializable {

private List<UploadData> dataItems;
private SelectItem[] dataTypeOptions, qualityOptions, accessOptions;
private UploadData selectedData;
private String filelocation;

@ManagedProperty(value="#{user.userName}")
private String userName;

public String getUserName() {
return this.userName;
}

dataBrowser 用于填充 Primefaces 数据表,当它被调用时 userName 为 null,我不确定为什么。

最佳答案

最近我也遇到了通过 @ManagedProperties 注入(inject)嵌套托管 bean 属性的问题。一旦注入(inject)它就永远不会改变。我通过在 getter 中评估 EL 而不是注入(inject)它来解决这个问题。

试试看:

public String getUserName() {
FacesContext context = FacesContext.getCurrentInstance();
return (String) context.getApplication().evaluateExpressionGet(context,"#{user.userName}", String.class);
}

您也可以尝试注入(inject)整个 user bean 并在 getter 中从中获取 userName 字段。

关于jsf - @ManagedProperty 不反射(reflect)变化并一直返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10024550/

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