2017-06-24 13 views
0

J'ai un problème avec HttpSession, je ne l'ai pas
Je pense que j'ai oublié une annotation ou quelque chose comme ça.
Ai-je besoin de faire un session.create()?Java Spring session.getAttribute ("test") est null

Dans UserController:

@Controller 
public UserController{ 
    public ResponseHttp connection(User userSent, HttpSession session) { 
     ResponseHttp responseHttp = new ResponseHttp();  

     //function to check login/mdp 
      if (check) { 
       responseHttp.setSuccess(true); 
       responseHttp.setMessage("Connection success"); 
       //some code 
       // 
       // 
       session.setAttribute("userId", 1); // this is an example 
       System.out.println(session.getAttribute("userId")) // return 1 
       return responseHttp; 
      } 
     } 

     responseHttp.setSuccess(false); 
     responseHttp.setMessage("Connection failed"); 

     return responseHttp; 
    } 
} 

Dans un autre contrôleur:

@Controller 
public class MyController{ 
    public void test(HttpSession session){ 
     System.out.println(session.getAttribute("userId")) ; // return null 
    } 
} 

UPDATE 25-06-2017

I essayé d'injecter @HttpSession dans les deux contrôleurs A connexion I vérifiez la session comme ça:

if(httpSession.isNew()){ 
    System.out.println("New") // ok return new ! 
    System.out.println(httpSession.getId()); // A87AC018FD8DDA33B023FAA6C1C2D71C 
} 

Dans l'autre contrôleur

if(httpSession.isNew()){ 
    System.out.println("New") // it's returning new again 
    System.out.println(httpSession.getId()); // 2FE08FB68EA53F7FEBB8143CFEE6A9EB 
}else{ 
    System.our.println("not new") 
} 

Question: Pourquoi pas la même session?

+1

vérifier si les deux sessions sont même en imprimant la session ids –

+0

ce que votre portée! – Generic

+0

jeter un oeil à ce lien peut-être vous aider à https://stackoverflow.com/questions/5766521/how-do-you-store-java-objects-in-httpsession – Generic

Répondre

0

Vous pouvez essayer cette ...

@Controller 
@SessionAttributes(value = "countrybean", types = {Country.class}) 
public class HelloController { 
    @Autowired 
    private CountryController controller; 
    @ModelAttribute("countrybean") 
     public Country addAttributes() { 
     Country country = new Country(); 
     country.setCountryName("India"); 
     country.setCapital("Delhi"); 
     return country; 
     } 
    @RequestMapping(value="countryinfo") 
    public String country(){ 
     return "start"; 
    } 
} 
+0

Je ne comprends pas. Chaque fois que vous voulez countrybean, vous devez mettre @SessionAttributes sur un contrôleur ... et vous faites countryController.getCountry()? – bakouz

+0

Veuillez expliquer pourquoi votre réponse fonctionnera. – Hima