別のマネージドBeanにマネージドBeanを注入しようとしています(ユーザーがloggenになっている場合にのみ、1つのマネージドBeanでアクションを実行する必要があり、そのユーザーは別のマネージドBeanに保存されます) 。しかし、NULLを返す!各マネージドBeanは異なるXHTMLページにリンクしているので、新しいHTTPセッションが作成される可能性があります。管理下のプロパティがnullを返す
最初の管理Bean:
@Named(value = "travellerLoginManagedBean")
@SessionScoped
public class travellerLoginManagedBean implements Serializable {
@EJB
private travellerUserEntityFacadeLocal travellerUserEntityFacade;
private String userName;
private String password;
private Boolean loggedIn;
/**
* Creates a new instance of travellerLoginManagedBean
*/
public travellerLoginManagedBean() {
}
public Boolean getLoggedIn() {
return loggedIn;
}
public void setLoggedIn(Boolean loggedIn) {
this.loggedIn = loggedIn;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Boolean validUser(){
loggedIn=true;
return travellerUserEntityFacade.checkLogin(this.userName, this.password)==true;
}
public String login() {
if (validUser()==true){
return "/travellerHome.xhtml";
}else{
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Usuario y/o password incorrecto!"));
return "/travellerLogin.xhtml";
}
}
}
秒管理Bean:
@Named(value = "travellerSearchFlightsManagedBean")
@RequestScoped
public class travellerSearchFlightsManagedBean{
@EJB
private itineraryTravellerFacadeLocal itineraryTravellerFacade;
@EJB
private itineraryFacadeLocal itineraryFacade;
@ManagedProperty(value="#{travellerLoginManagedBean}")
private travellerLoginManagedBean loginBean;
private String departureLocation;
private String arrivalLocation;
private Date departureDate;
private int departureHour;
private int departureMinute;
private int numPassengers;
private int maxStops;
private String economyOrBusiness;
private ArrayList<itineraryDTO> itinerariesList;
private ArrayList<itineraryTraveller> searchList;
private itineraryTraveller selectedItinerary;
private String stopPrint;
private static final Logger LOG = Logger.getLogger(travellerSearchFlightsManagedBean.class.getName());
(......)
public void reserveFlight(){
if (loginBean.getLoggedIn()==true){
System.out.println("iiiiiiiiiiiiiiiiin");
//status reserved when traveller reserves an itinerary
selectedItinerary.setStatus('r');
//set the userName from the user who reserved this itinerary before persist it in a shared among all users db
selectedItinerary.setUserName(loginBean.getUserName());
//persist the reserved itinerary in the db
itineraryTravellerFacade.create(selectedItinerary);
}else{
System.out.println("not iiiiiiiiiiiiiiiiin");
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Must be logged in before reserving an itinerary"));
}
}
}
私はWEBINFフォルダにfacesconfigファイルを持っていません!!! btwあなたの答えのおかげで – pquin92
私はあなたが言ったものと顔の設定ファイルを作成しました。しかし、それでもマネージプロパティはnullを返します。それはヌルではいけません – pquin92
私は知っています。これは通常、名前の問題です(リファクタリングを行うクラス名を短縮しようとします)。私はまた、このエラーを解決した人々がプロジェクトを単に掃除することについて聞いた。両方を試みてください。 – Louis