2013-07-29 4 views
16

Mam URL odsyłających takiego:uzyskać wartości string zapytanie w Spring MVC Controller

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

Jak mogę uzyskać wartości "strona" i "gotoUrl" Wiosna w moim kontrolera?

Chcę przechowywać te wartości jako zmienne, aby móc je później wykorzystać.

Dzięki,

+1

Spójrz na adnotację @RequestParam. – Aurand

+1

Czy naprawdę chciałeś powiedzieć "referer"? Jeśli tak, zaakceptowana odpowiedź jest błędna. –

+0

Powinieneś prawdopodobnie zakodować wartość 'gotoUrl 'w adresie URL (chociaż nie jestem pewien, czy ma to znaczenie funkcjonalne w tym konkretnym przykładzie). –

Odpowiedz

9

Można użyć metody getParameter() z interfejsu HttpServletRequest.

Na przykład;

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

Ma to sens, jeśli chcę przekazać żądanie jako argument. Ale czy istnieje sposób na odzyskanie parametrów, jeśli nie chcę przekazać HttpServletRequest jako argumentu do mojej akcji kontrolera? – Jake

+10

Podczas gdy ta odpowiedź jest technicznie poprawna, nie jest to zalecany sposób, aby zrobić to wiosną, odpowiedź @ Affe jest bardziej trafna. – Akshay

+0

@AkshaySinghal, chyba że nie znasz parametrów z góry, ale potrzebujesz sposobu na ich obsłużenie - możesz użyć 'request.getParameterNames()' lub 'request.getParameterMap()' –

81

W SpringMVC można określić wartości z ciągu kwerendy być przetwarzane i przekazywane jako parametry metody z adnotacją @RequestParam.

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

Pobierz QueryString w Spring MVC Controller

Jest to rozwiązanie specyficzne Portal Liferay, i to działa.

Query String Przykład: ?reportTypeId=1&reportSeqNo=391

W celu uzyskania wartości reportSeqNo w Liferay Portal, musimy uzyskać oryginalną Servlet żądanie.

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