2012-01-18 7 views
1

この投稿でDynamic ui:include私は、同じブラウザの新しいウィンドウやタブを読み込むことを許可するオブジェクトをある州にどのように格納でき、新しいウィンドウにも格納されていないことを尋ねました。 Adrian Mitevは私に、というMyFaces拡張機能のオプションであるCODIを使用するように指示しました。私はそれを実装しようとしました。@WindowScopedでオブジェクトを取得するにはどうすればよいですか?

私は目が見えず、Apache Wikiを開こうとしたときにブラウザがクラッシュし、多くのページでガイドが読めないと言うべきです。

しかし私は自分のプロジェクトにソースコードを追加し、コンパイラはエラーを出さなかった。 問題は、私が@WindowScopedで保存したBeanを検索しようとすると、ページが正しく動作しないことです。

私は豆でこのコードを使用します。include.xhtml

@ManagedBean (name="logicBean") 
@WindowScoped 

私はこのコードのパラメータ取得:(

<ui:include src="#{logicBean.pageIncluded}"/> 

をそして、私の他の豆で、私はこのコードでLogicBeanを取得し、問題がこのコードにあると確信しています)

LogicBean l = (LogicBean) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("logicBean"); 

「正しい」LogicBeanオブジェクトを取得するにはどうすればよいですか?

答えて

2

セッションマップからLoginBeanを取得しようとしています。これは、標準のJSF @SessionScopedアノテーションを持つセッションスコープBeanでのみ機能します。

他のBeanにアクセスする標準的な方法は、検索Beanで@ManagedPropertyを使用しています。

など。

@ManagedBean 
@RequestScoped 
public class OtherBean { 

    @ManagedProperty("#{logicBean}") 
    private LogicBean logicBean; 

    // Getter+Setter. 
} 

あなたは本当にあなたが代わりにApplication#evaluateExpressionGet()を使用する必要があり、プログラムでELを評価することによって、メソッドブロック内でそれにアクセスする必要がある場合:

FacesContext context = FacesContext.getCurrentInstance(); 
LogicBean logicBean = context.getApplication().evaluateExpressionGet(context, "#{logicBean}", LogicBean.class); 
// ... 
+0

をBalusC @:ありがとうございました!私は、コードがセッション上のオブジェクトをretriviedことを知っていたが、私はそれをどのように変更できるか分からなかった!再度、感謝します! – Filippo1980

+0

ようこそ。 – BalusC

関連する問題