У меня есть проблема, которую я не понимаю: за любым представлением у меня есть контроллер ManagedBean, который является RequestScoped, и data ManagedBean, который содержит данные для представления и является SessionScoped.
Итак, есть дваПредставления, которые входят в систему с loginData и loginController и обзор с OverviewData и OverviewController.
Функциональность должна быть такой:
- Пользователь входит в приложение (метод loginController)
- Если проверка подлинности прошла успешно, происходит перенаправление на файл Overview.xhtml (снова в методе loginController)
- Затем OverviewData получает свои данные с помощью OverviewController, который получает их из уровня бизнес-логики
- Overview.xhtml показывает удаленные данные
Итак, я хочу заполнить OverviewData вне loginController сразу после входа в систему!(??? или, если возможно, правильно, если построено обзорное представление, если возможно ???).
Я пробовал это с managedProperties, но тот, который я инициирую в loginController, является объектом, отличным от управляемогоProperty в OverviewController,хотя они имеют одинаковое имя!Как это возможно?
О, мальчик, я сомневаюсь, что вы, ребята, понимаете, о чем я, поэтому мне нужно опубликовать некоторый код:
LoginController.java
...
@ManagedBean
@RequestScoped
public class LoginController {
@ManagedProperty(value = "#{overviewData}")
private OverviewData overviewData;
OverviewController overviewController;
public LoginController(){
overviewController = new OverviewController ();
}
String login() throws Exception {
UsernamePasswordToken token = new UsernamePasswordToken(loginData.getName(), loginData.getPw().trim());
try {
currentUser.login(token);
overviewController.fillProjects();
...
OverviewController.java
...
@ManagedBean
@RequestScoped
public class OverviewController {
@ManagedProperty(value = "#{overviewData}")
private OverviewData overviewData;
public void fillProjects(){
if(overviewData == null){
overviewData = new OverviewData();
}
overviewData.setProjects(projectService.getProjects()); //retrieves data from business logic
}
...
OverviewData.java
...
@ManagedBean(name = "overviewData")
@SessionScoped
public class OverviewData {
private List<ProjectDTO> projects; //that's what the view needs to display the overview
public void setProjects(List<ProjectDTO> projects) {
this.projects = projects;
}
...
Надеюсь, это поможет показать мою проблему,Если вы не понимаете, пожалуйста, спросите в комментарии ..
Было бы неплохо, если вы можете мне помочь: -)
Ура ...