2011-10-18 11 views
2

私の要件は「ユーザーがSSOを使用して外部システムによって認証されました」です。 認証に成功すると、外部システムからヘッダー変数が返されます。 userId、 firstName、lastNameなどを入力してください。 現在、これらのヘッダー変数は、JSPページの request.getHeader( "userId")を使用して取得できます。バッキングBeanメソッドを呼び出して要求を取得する方法着信要求からのヘッダー値とJSFページへの転送結果

しかし、私はJSF 2.0を使用しており、これがJSFでどのように実行できるかを理解できません。私は

Map<String, String> requestHeaders = context.getExternalContext().getRequestHeaderMap(); 
String userName = requestHeaders.get(requestHeaderName); 

...スタックオーバーフローにここに一つの例を見ましたが、これは、バッキングBeanで呼び出すことができますどのようにそれ以上の応答がありませんでした。

任意のポインタまたはサンプルコードが参考になります。

答えて

0

contextは、FacesContextのちょうどthe current instanceです。これはリクエストベースのスレッドローカル変数で、FacesServletによって制御されるすべてのJSFコードで常に利用可能です。

FacesContext context = FacesContext.getCurrentInstance(); 
Map<String, String> requestHeaders = context.getExternalContext().getRequestHeaderMap(); 
String userName = requestHeaders.get(requestHeaderName); 
// ... 

あなたは、たとえば、Beanのコンストラクタ、Beanの@PostConstruct方法、Beanのアクション(リスナー)メソッド、エトセトラをこの中に呼び出すことができます。適切な場所は、この情報を収集する瞬間と、この情報で何をしたいかによって異なります。

+0

レスポンスありがとうBalus。たとえば、LoginBean.javaがあり、コンストラクタでこのコードを呼び出したいとします。しかし、私のLoginBeanのコンストラクタが呼び出されるように、私のURLはどのように見えますか?私のアプリケーションがweblogicで/ webとしてデプロイされていると言うことができます。 http:// localhost:7001/web/faces/LoginBeanのようなURLはLoginBeanのコンストラクタを直接呼び出すか、web.xmlやfaces-config.xmlのどこかに設定マッピングを行う必要があります。 – gcool01

+0

あなたが見たいビューのURLだけです。 'login.xhtml'はおそらく? 'LoginBean'のプロパティとアクションをそのビューのコンポーネントにバインドするだけです。 – BalusC

関連する問題