そのため、文字列値を渡そうとして問題が発生しています。
文字列値は、ログインページからユーザー名として入力されます。
次に、JSFはBeanを呼び出してログイン情報を確認し、別のJSFページに進みます。
新しいJSFページにユーザー名を渡す方法を考えていました。ありがとうございました。
リダイレクトの代わりにナビゲーションを実行している場合は、基本的に何もする必要はありません。情報は、ナビゲートされたページでも利用できます。
たとえば、ログインページで
<h:inputText value="#{bean.username}" />
ナビゲートされたページ:
<p>You have entered the following username: #{bean.username}</p>
ただし、ナビゲーションではなくリダイレクトを実行している場合は、基本的に、少し広い範囲で情報を保存する必要があります。質問で具体的な機能要件を明確に説明していませんでしたが、私が正しく推測した場合は、残りのHTTPセッションで現在ログインしているユーザーを覚えておきたいだけです。その場合は、ログインアクション中にセッションスコープに保存するだけです。
public String login() {
// ...
User user = userService.find(username, password);
// ...
externalContext.getSessionMap().put("user", user);
// ...
return "nextpage?faces-redirect=true";
}
このようにし#{user}
て、HTTPセッション全体で利用できます。
<p>You're logged in as #{user.name}.</p>
<t:saveState>
セッションスコープを使用せずに使用することもできます。<t:saveState>
リクエストスコープよりも長いが、セッションスコープよりも短い。
これはあなたを助けるかもしれません:http://myfaces.apache.org/tomahawk-project/tomahawk12/tagdoc/t_saveState.html