Czy istnieje sposób na uzyskanie samych danych postu? Wiem, że spring obsługuje wiązanie danych postów z obiektami Java. Ale biorąc pod uwagę dwa pola, które chcę przetwarzać, jak mogę uzyskać te dane?
Załóżmy na przykład, że mój formularz miał dwa pola:
<input type="text" name="value1" id="value1"/>
<input type="text" name="value2" id="value2"/>
W jaki sposób powinienem odzyskać te wartości w moim kontrolerze?
java
spring-mvc
royhowie
źródło
źródło
Inną odpowiedzią na dokładne pytanie OP jest ustawienie
consumes
typu zawartości na,"text/plain"
a następnie zadeklarowanie@RequestBody String
parametru wejściowego. Spowoduje to przekazanie tekstu danych POST jako zadeklarowanejString
zmiennej (postPayload
w poniższym przykładzie).Oczywiście zakłada się, że twój ładunek POST to dane tekstowe (jak podano w OP).
Przykład:
@RequestMapping(value = "/your/url/here", method = RequestMethod.POST, consumes = "text/plain") public ModelAndView someMethod(@RequestBody String postPayload) { // ... }
źródło
value1
ivalue2
, utworzyłoby to jeden ciąg dla obu wartości? Wtedy trzeba byłoby przeanalizować poszczególne wartości? Po co to robić, skoro można określić / uzyskać każdą wartość indywidualnie, tak jak w zaakceptowanej odpowiedzi?RequestMethod.POST
. Dodałem nawet,@CrossOrigin(origins = "*")
ale nadal mam to samo ... Nie wiem, co się dzieje ... Użyłem tego samego podpisu co twoja odpowiedź (z wyjątkiem tego, żesomeMethod
zwracaString
w moim przypadku) ...Spring MVC działa w oparciu o Servlet API. Możesz więc użyć
HttpServletRequest#getParameter()
do tego:String value1 = request.getParameter("value1"); String value2 = request.getParameter("value2");
HttpServletRequest
Powinny już być dostępne wewnątrz wiosennym MVC jako jeden z argumentów sposobu wedłughandleRequest()
metody.źródło
RequestMethod.POST
. Dodałem nawet,@CrossOrigin(origins = "*")
ale nadal mam to samo ... Nie wiem, co się dzieje ... Użyłem tego samego podpisu co twoja odpowiedź (z wyjątkiem tego, żesomeMethod
zwracaString
w moim przypadku) ...Możesz po prostu przekazać żądany atrybut bez żadnych adnotacji w kontrolerze:
@RequestMapping(value = "/someUrl") public String someMethod(String valueOne) { //do stuff with valueOne variable here }
Działa z GET i POST
źródło