JSFとPrimeFacesを使用してログインフォームを実装しました。 私はPrimeFacesショーケースウェブサイトでthis exampleを使用しました。Faceletsページのセッション属性にアクセスするにはどうすればいいですか
私は、データテーブルを表示するFaceletsページを持っています。今、上記のログインフォームをこのテーブルページに統合する必要があります。セッション属性を処理するためにLoginBean.javaにいくつかの行を追加しました。
if (username.equals(getUsername_db()) && password.equals(getPassword_db())) {//valid user and paward
loggedIn = true;
msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Welcome", getUsername_db());
//new lines
FacesContext context2 = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) context2.getExternalContext().getSession(true);
session.setAttribute("user", username);
//end of new lines
...
ユーザーがログインしていない場合、私は、のdataTableから列を非表示にする必要があります。 は今私の問題は、どのように私は私のFaceletsページ内のセッション属性にアクセスすることができますか?
ありがとうございます。しかし、私はビュー内のオブジェクトとしてユーザーを取得します。このような何かが "User @ 1a8b71e"を示しました。とにかく、私は私の問題を解決するための答えの一部を得ました。セッション設定部分を削除し、LoginBeanクラスをSessionScopedとして設定しました。そして、私はpanelGroupタグ内で直接値を取得することができました。SQLのアドバイスをもう一度歓迎します。私は準備文を使ってそれを変更しました。 –
あなたのコードに表示されている 'username'は明らかに' String'ではありません。おそらくあなたは質問のコードを単純化したでしょうか?ところで、SQLのコメントは、準備されたステートメントについてのヒントではありませんでした。ユーザー名とパスワード**を2回比較しています**(DBで1回、その後Javaで1回)。これは意味がありません。 DBが1つのレコードを返すかどうかをチェックするだけです。既に確認して返すようDBに依頼したユーザー名とパスワードをもう一度比較する必要はありません。 – BalusC
私の最後のSQLクエリでは、Where句でユーザー名だけを使用しました。 like:String query = "SELECTユーザ名、パスワードからユーザ名= '" + uname + "';";だから私はusername.equals(getUsername_db()の部分を削除することができます。)この場合、パスワードを確認する必要があります...ありがとうご提案ありがとう –