@ManagedProperty 不反映更改并始终返回 null

2023-12-09

我试图将一个 sessionscoped bean 的值注入到 viewscoped 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,我不知道为什么。


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

尝试一下:

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

您也可以尝试注入整个user豆并得到userNamegetter 中的字段。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

@ManagedProperty 不反映更改并始终返回 null 的相关文章

随机推荐