Я пытаюсь внедрить управляемый bean-элемент в другой управляемый bean-компонент (мне нужно выполнить действие в одном управляемом компоненте только в том случае, если пользователь входит в систему, и этот пользователь сохраняется на другом управляемом компоненте) , Но возвращается NULL! Каждый управляемый компонент ссылается на другую страницу XHTML, поэтому, возможно, создается новый HTTP-сеанс?Управляемое свойство возвращает null
Первый управляемый компонент:
@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";
}
}
}
Второй управляемый компонент:
@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"));
}
}
}
но у меня нет файла facesconfig в моей папке WEBINF !!! btw Спасибо за ваш ответ – pquin92
ok Я создал файл конфигурации лиц с тем, что вы сказали. Но все равно возвращает null управляемое свойство. и это не должно быть – pquin92
Я знаю. Обычно это проблема имен (попробуйте сократить имена классов, выполняющих рефакторинг). Я также слышал о людях, которые решили эту ошибку, просто очищая проект. Попытайтесь сделать то и другое. – Louis