3

1 つの 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 と呼ばれ、その理由がわかりません。

4

5 に答える 5

2

最近、ネストされたマネージド Bean プロパティの注入にも問題があり@ManagedPropertiesます。一度注入すると、それは決して変わりませんでした。EL をインジェクトする代わりに getter で評価することで回避策を実行しました。

それを試してください:

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

userBean全体を注入userNameして、ゲッターでフィールドを取得することもできます。

于 2012-08-03T09:03:44.593 に答える