2010-10-15 5 views
3

J'ai un Spring MVC (3) Contrôleur et j'essaie de mettre dans les annotations, mais a échoué Heres mon plan de codeSpring MVC - Session - Demande

@Controller 
public class SpringController { 

    @RequestMapping("/welcome") 
    public String myHandler(@RequestParam("id") String id) { 

     //My RequestParm is able to do the job of request.getParameter("id") 

     HttpSession session = request.getSession(); 
     session.setAttribute("name","Mike") ; 
     return "myFirstJsp"; 
    } 

    @RequestMapping("/process") 
    public String processHandler(@RequestParam("processId") String processId) { 

     //do stuff 
     String someName = session.getAttribute("name"); 
     return "result"; 
    } 

} 

Juste pour l'amour de l'objet de la session, je dois déclarer HttpServletRequest et HttpSession. Y at-il de toute façon une solution avec @nnotations?

Merci!

+0

Les gars mon RequestParam a une erreur de syntaxe .Il manque un ")" alors ne vous inquiétez pas à ce sujet. Juste pour info – sv1

Répondre

1

Si ce n'est pas le cas, vous devriez regarder this documentation sur SessionAttributes, pour voir si elle s'applique à vous.

2

Vous pouvez déclarer HttpSession ou HttpServletRequest comme arguments dans votre gestionnaire et ils seront automatiquement informés.

public String myHandler(@RequestParam("id") String id, HttpServletRequest request) { ... } 

Il existe de nombreux arguments et résultats différents pour les gestionnaires. Vous pouvez les voir here.

+0

Merci pour votre réponse. Oui, je les vois mais je n'arrive toujours pas à comprendre comment obtenir l'objet de session à partir de HttpServletRequest en utilisant des annotations. Si quelqu'un peut élucider ce que ce serait génial! – sv1

+0

Vous n'avez pas besoin d'annotations si vous le faites de cette façon, pourquoi voulez-vous? @SessionAttributes, comme le dit @Raghuram, ou @Scope ("session") sont des annotations liées à la session web, mais elles sont probablement inadaptées à ce que vous voulez faire. – sinuhepop

2

Si vous ne désirez pas utiliser HttpSession et que vous voulez quelque chose géré par Spring qui a plus de contrôle de portée, vous pouvez également utiliser org.springframework.web.context.request.WebRequest:

public String myHandler(@RequestParam("id") String id, WebRequest request) { 
    request.getAttribute("name", SCOPE_REQUEST); 
    ... 
}