Chciałbym wiedzieć, jak mogę rozwiązać ten problem, wyjaśnię: chcę utworzyć pasek wyszukiwania i wysłać użytkownika do widoku jsp z wynikami. Stworzyłem w moim kontrolerze następną metodę:
@RequestMapping(value = "/search={productName}", method = RequestMethod.GET)
public ModelAndView getProducteByName(@PathVariable("productName") String productName) {
ModelAndView modelview = new ModelAndView("/productSearch");
List productsByName = productService.getProductByName(productName);
modelview.addObject("productsByName", productsByName );
return modelview;
Mam formularz w pliku jsp, taki jak ten:
<!-- Search form -->
<form class="form-inline md-form form-sm mt-0" method="get" >
<i class="fas fa-search" aria-hidden="true"></i>
<input class="form-control form-control-sm ml-3 w-75" type="text" placeholder="Search" name="search"
aria-label="Search">
</form>
Problem polega na tym, że kiedy umieszczam cokolwiek do przeszukania w wyszukiwarce słupkowej, działa, umieszcza mi ?
w adresie URL, więc kontroler nie rozumie requestMapping.
Przykład: http://localhost:8080/projectbotigabio/search=potato
i stawia mnie: http://localhost:8080/projectbotigabio/?search=potato
Próbowałem wielu rzeczy, w tym próbę wstawienia jako metody „post” zamiast „get”, ale to nie działa ... jakieś rozwiązanie?
1 odpowiedź
Przeglądarki internetowe obsługują tylko 3 rodzaje przesyłania formularzy:
method="get"
Każda wartość formularza jest dodawana do adresu URL za pomocą
?name=value&name=value&...
method="post"
Każda wartość formularza jest dodawana do POST z typem treści
application/x-www-form-urlencoded
i treściąname=value&name=value&...
method="post" enctype="multipart/form-data"
Żądanie POST ma typ treści
multipart/form-data
, a treść jest wieloczęściowa, a każda część jest wartością formularza.
Przeglądarki internetowe nie mogą zbudować żądanego adresu URL, więc musisz zrobić to sam, tj. Uniemożliwić przeglądarce wysyłanie żądania POST i wysłać własne żądanie za pomocą Ajax. Jeśli tego chcesz, załóż czapkę do nauki i zacznij uczyć się, jak to działa.
Zalecam zaprzestanie prób używania niestandardowej składni adresu URL i użycie standardowego przetwarzania GET
.
Tak czy inaczej, sugeruję, abyś dowiedział się więcej o tym, jak działają formularze HTML, zanim spróbujesz dalej odejść od standardów.
Podobne pytania
Nowe pytania
java
Java to język programowania wysokiego poziomu. Użyj tego tagu, jeśli masz problemy z używaniem lub zrozumieniem samego języka. Ten tag jest rzadko używany samodzielnie i jest najczęściej używany w połączeniu z [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] i [maven].