0

そのため、文字列値を渡そうとして問題が発生しています。

文字列値は、ログインページからユーザー名として入力されます。

次に、JSFはBeanを呼び出してログイン情報を確認し、別のJSFページに進みます。

新しいJSFページにユーザー名を渡す方法を考えていました。ありがとうございました。

4

2 に答える 2

6

リダイレクトの代わりにナビゲーションを実行している場合は、基本的に何もする必要はありません。情報は、ナビゲートされたページでも利用できます。

たとえば、ログインページで

<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>
于 2012-12-10T20:17:50.830 に答える
2

<t:saveState>セッションスコープを使用せずに使用することもできます。<t:saveState>リクエストスコープよりも長いが、セッションスコープよりも短い。

これはあなたを助けるかもしれません:http://myfaces.apache.org/tomahawk-project/tomahawk12/tagdoc/t_saveState.html

于 2012-12-11T07:13:26.473 に答える