Problème d'accès à un session scoped bean à partir d'un controller
Bonjour,
J'ai un problème d'accès à un bean avec scope "session" à partir d'un controller.
Le test que je fais : J'initialise le bean à partir d'un controller, et j'essaye d'y accéder à partir d'un autre controller.
Ci-dessous les code source :
spring-servlet.xml :
Code:
1 2 3 4
| <bean id="login" class="gestionmagasin.attribute.Login" scope="session">
<!-- this next element effects the proxying of the surrounding bean -->
<aop:scoped-proxy />
</bean> |
Fichier Login.java :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| @Component
public class Login implements Serializable {
private String login;
private String motpasse;
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getMotpasse() {
return motpasse;
}
public void setMotpasse(String motpasse) {
this.motpasse = motpasse;
}
} |
Mon premier controller ayant comme attribut un objet de type Login et qui initialise cet objet :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| @Controller
@RequestMapping("/")
public class DefaultControler {
@Resource(name="defaultService")
private DefaultService DefaultService;
@Autowired
private Login login;
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String connectUser(@ModelAttribute("connectionAttribute") Login login, Model model){
this.login = login;
if (DefaultService.getUserFromLoginPassword(login.getLogin(), login.getMotpasse()) != null){
model.addAttribute("currentuser", DefaultService.getUserFromLoginPassword(login.getLogin(), login.getMotpasse()));
System.out.println("valeur de login dans DefaultContoler" + this.login.getLogin());
return "Admin_index";
} else return "index";
} |
Le premier contoler initialise bien l'attribut login (this.login.getLogin() retourne la bonne valeur)
Mon deuxième controller :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| @Controller
@RequestMapping("/employe")
public class EmployeControler {
@Resource(name="employeService")
private EmployeService employeService;
@Autowired
private Login login;
@RequestMapping(value = "/formajoutemploye")
public String ajoutemploye(Model model){
System.out.println("valeur de login dans le controller EmployeControler : " + login.getLogin());
model.addAttribute("currentuser2", login);
return "CreationEmploye";
} |
Et là, dans ce controller, login.getLogin() retourne null !
Quelqu'un peut m'aider svp ?
Merci
Problème d'accès à un session scoped bean à partir d'un controller
Bonjour,
Finalement, j'ai pu résoudre le problème en créant un service qui gère le bean à portée session et l'intégrant dans mon controler :
Dans spring-servlet.xml
Code:
1 2 3 4 5
|
<bean id="currentUser" class="atrigui.gestionmagasin.attribute.CurrentUser" scope="session">
<!-- this next element effects the proxying of the surrounding bean -->
<aop:scoped-proxy />
</bean> |
CurrentUserServiceIimpl.java
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
@Service("currentUserService")
public class CurrentUserServiceImpl implements CurrentUserService {
CurrentUser currentUser;
public CurrentUser getCurrentUser(){
return currentUser;
}
public void setCurrentUser(CurrentUser user){
this.currentUser= user;
}
} |
Dans le controler :
Code:
1 2 3 4 5 6 7
|
@Autowired
private CurrentUserService currentUserServiceImpl;
.
.
.
model.addAttribute("currentuser", currentUserServiceImpl.getCurrentUser()); |