5

このBalusCの投稿のおかげで、別のマネージドBeanでマネージドBeanのインスタンスを取得しようとしています:ここ

findBeanメソッドを使用すると、Beanを取得できますが、Beanを取得できManagedPropertyません。

注入する私の豆はこれです:

@ManagedBean(name="locale")
@SessionScoped
public class LocaleBean {

   private String locale;

   public String getLocale() {              
        return locale;
   }

   public void setLocale(String locale) {
        FacesContext.getCurrentInstance().getViewRoot().setLocale(new Locale(locale));      
        this.locale = locale;
   }

}

LocaleBean locale = findBean("locale");だから私が私のlogin豆を呼ぶときそれは仕事ですが:

@ManagedProperty("#{locale}") // OR localeBean, LocaleBean...
private LocaleBean locale;

動作しません...

com.sun.faces.mgbean.ManagedBeanCreationException:Impossibledecréerlebeangéré«ログイン»。Lesproblèmessuivantsontétédétectés:-Lapropriété«locale»dubeangéré«login»n'existepas。

なぜお願いしますか?

4

3 に答える 3

4

@ManagedProperty アノテーションが付けられた Bean のゲッター/セッターを作成する必要があります

于 2013-03-02T18:59:01.010 に答える
2

LocaleBeanがセッションスコープになっているようです。@ManagedPropertyアノテーションとゲッター/セッターの代わりに、サーブレットコンテキストのgetSessionMapメソッドを使用して、コードから直接別のセッションスコープのマネージドBeanを参照できます。

LocaleBean locale = (LocaleBean) FacesContext.getCurrentInstance()
                    .getExternalContext().getSessionMap().get("locale");
于 2012-12-27T16:08:04.540 に答える
0

ログイン Bean で LocaleBean を呼び出したい場合は、SessionScoped 以上である必要があります。

Login Bean で Locale Bean を呼び出したい場合は、次のことを行う必要があります。

@ManagedProperty("#{locale}")
private LocaleBean locale;

そのために適切なセット e get を呼び出します。これは必要ありません

LocaleBean locale = findBean("locale");

ログイン Bean で次のようにローカルであるため、現在のロケールを使用できます。

String s = local.getLocale(); 
于 2014-05-03T21:45:37.067 に答える