JSFとPrimeFacesでアプリケーションを開発しています。 私は、管理されたセッションスコープを持ち、ユーザー名、パスワード、isUserLoggedInを持っています。 ログインコンポーネントを処理すると、それは動作し、それに応じてページが変更されます。別のページに移動するとすぐに、ユーザー名データが失われます。アプリケーション全体でユーザー名にアクセスする必要があります。 誰かがなぜセッションをスコープする必要があるデータを失うのか知っていますか?なぜ私はそれを他のページではなく1つのページから保持するのですか? おかげJSF PrimeFacesがデータとセッションを失う
import authentication.AuthenticatorManagerLocal;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean
@SessionScoped
public class UserMB {
@EJB
private AuthenticatorManagerLocal authenticatorManager;
/** Creates a new instance of UserMB */
public UserMB() {
}
Boolean isUserLoggedIn;
String username;
String password;
String nickName;
public String getNickName() {
nickName="vanessa";
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public Boolean getIsUserLoggedIn() {
return isUserLoggedIn;
}
public void setIsUserLoggedIn(Boolean isUserLoggedIn) {
this.isUserLoggedIn = isUserLoggedIn;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String authenticateUser(){
isUserLoggedIn= authenticatorManager.authenticateUser(username, password);
if(isUserLoggedIn)return "Home";
else
return null;
}
public void logout(){
isUserLoggedIn=false;
username="";
password="";
}
public String goToIndex(){
return "Index";
}
}
HOMEは、カスタムコンポーネント
expSearchResultsMB.search(内
<p:commandButton value="SearchCB" action="#{expSearchResultsMB.search()}" ajax="false" />
を持っているが)、私は、ユーザー名
<h:outputLabel value="#{userMB.username}" />
を表示するにsearchResults に送信しますユーザー名とisUにアクセスする必要がありますSerLoggedinはアプリケーションのすべてのページにあります。 ユーザーがログインしているかどうかを確認すると、彼がいる場合はホームを起動します。 ホームにはユーザー名が正しく表示されますが、自宅からsearchCBを使用したときは、着陸したSearchResultsページにユーザー名が表示されません。
誰でも手助けできますか?
Beanがセッションスコープでないか、データが正しく格納されていないか、セッションが正しく維持されていないようです。私たちが直面している問題を正確に再現するために必要な最小限のコードを見ずに、実際の原因を特定するのは難しいです。正確なJSF impl/versionとPrimeFacesのバージョンを挙げることも役立ちます。 – BalusC
私はJSF 2とPrimeface 3を使用しています。私がアクセスする必要があるBeanはSessionスコープです。他の詳細が必要な場合はお知らせください。ありがとう – Viola
コードは本当の原因を見るのに十分でした。しかし、私は「Mojarra 2.1.4」と「PrimeFaces 3.0 Final」のような正確なimpl/versionを求めていました。 – BalusC