2013-07-29 13 views
16

Ho un URL di riferimento come questo:ottenere i valori stringa di query in Spring MVC controller

http://myUrl.com?page=thisPage&gotoUrl=https://yahoo.com?gotoPage

Come faccio a ottenere i valori di "pagina" e "gotoUrl" nel mio controller primavera?

Voglio memorizzare questi valori come variabili, quindi posso riutilizzarli in seguito.

Grazie,

+1

Dai un'occhiata all'annotazione @RequestParam. – Aurand

+1

Intendevi davvero dire "referer"? Se è così, la risposta accettata è sbagliata. –

+0

Probabilmente dovresti codificare per URL il valore di 'gotoUrl' (anche se non sono sicuro che funzionerebbe in questo particolare esempio). –

risposta

9

È possibile utilizzare il metodo getParameter() dall'interfaccia HttpServletRequest.

Ad esempio;

public void getMeThoseParams(HttpServletRequest request){ 
    String page = request.getParameter("page"); 
    String goToURL = request.getParameter("gotoUrl"); 
} 
+1

Questo ha senso, se voglio passare la richiesta come argomento. Ma c'è un modo per recuperare i parametri, se non voglio passare HttpServletRequest come argomento all'azione del mio controller? – Jake

+10

Sebbene questa risposta sia tecnicamente corretta, non è il modo consigliato di farlo con Spring, la risposta di @ Affe è più pertinente. – Akshay

+0

@AkshaySinghal a meno che tu non conosca i parametri in anticipo ma hai bisogno di un modo per gestirli - allora puoi usare 'request.getParameterNames()' o 'request.getParameterMap()' –

81

In SpringMVC è possibile specificare i valori dalla stringa di query essere analizzato e passato come parametri di metodo con l'annotazione @RequestParam.

public ModelAndView getPage(
    @RequestParam(value="page", required=false) String page, 
    @RequestParam(value="gotoUrl", required = false) String gotoUrl) { 
} 
-2

Prendi il QueryString in Spring MVC controller

Questa è la soluzione specifica portale Liferay, e funziona.

Stringa query Esempio: ?reportTypeId=1&reportSeqNo=391

Al fine di ottenere il valore di reportSeqNo in Liferay Portal, abbiamo bisogno di ottenere il Request Servlet originale.

String reportSeq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(renderRequest)).getParameter("reportSeqNo"); 
Problemi correlati