Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

@ManagedProperty does not reflect changes and keeps returning null

I'm trying to inject the value of one sessionscoped bean into a viewscoped bean but it keeps returning null, here's a snippet:

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;
}

And it's used in:

@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 is used to populate a Primefaces datatable, when it's called userName is null and I'm not sure why.

like image 979
Alaph432 Avatar asked Mar 22 '26 19:03

Alaph432


1 Answers

Recently I have problem with injecting nested managed bean properties by @ManagedProperties too. Once injected it never changed. I did a workaround by evaluating EL in getter instead of injecting it.

Try that:

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

You can also try injecting entire user bean and get userName field from it in getter.

like image 63
michal777 Avatar answered Mar 25 '26 15:03

michal777



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!