2017-02-26 1 views
0

D'un servlet, je fais parvenir la demande à un contrôleur de ressort comme ci-dessousdemande vers l'avant au dispositif de commande à ressort

RequestDispatcher rd = request.getRequestDispatcher("/myController/test?reqParam=value"); 
rd.forward(request, response); 

Afin de passer un paramètre au dispositif de commande à ressort, je passe comme paramètre de la requête dans le rediriger l'URL.

Y a-t-il une meilleure façon de procéder?

Au lieu de transmettre le paramètre de demande, est-ce que je peux passer comme paramètre de méthode au contrôleur de ressort pendant le transfert?

+1

Copie possible de [Avance de printemps avec paramètres ajoutés?] (Http: // stackoverflow .com/questions/8585216/spring-forward-with-added-parameters) – bphilipnyc

+0

Puis-je demander - est-ce que vous devez passer cet appel à partir d'une servlet Java pure? C'est, pourquoi pas un contrôleur? – bphilipnyc

+0

Je suis déjà dans le contexte d'une servlet (je ne peux pas changer beaucoup de code dans cette servlet). Je dois transmettre la demande à un contrôleur où je peux enrichir la réponse avant de renvoyer au navigateur – lives

Répondre

1

Ce sera appelée lorsque /myController/test?reqParam=value est demandé:

@RequestMapping("/myController/test") 
public String myMethod(@RequestParam("reqParam") String reqParamValue) { 
    return "forward:/someOtherUrl?reqParam="+reqParamValue; //forward request to another controller with the param and value 
} 

Ou bien vous pouvez faire:

@RequestMapping("/myController/test") 
public String myMethod(@RequestParam("reqParam") String reqParamValue, 
         HttpServletRequest request) { 
    request.setAttribute("reqParam", reqParamValue); 
    return "forward:/someOtherUrl"; 
} 
+0

L'OP appelle depuis une servlet, pas un autre contrôleur de ressort. Je ne pense pas que vous pouvez utiliser le "" forward: .... "' truc dans ce cas? –

+0

Hmm, d'accord. Ce n'était pas clair pour moi que ça devait provenir d'une servlet ou que c'était comme ça que OP faisait ça. – bphilipnyc

+0

Merci. Je vais essayer ça. – lives

1

vous pouvez utiliser la variable de chemin tels que suivre sans avoir besoin d'utiliser le paramètre de chaîne de requête:

@RequestMapping(value="/mapping/parameter/{reqParam}", method=RequestMethod.GET) 
public @ResponseBody String byParameter(@PathVariable String reqParam) { 
    //Perform logic with reqParam 
} 
+0

Merci. Va essayer ceci – lives