gewusst wie: übergeben Sie parameter-Werte an einen controller in springboot
Ich habe eine Seite erstellt, auf Suche nach Studenten aus der Datenbank mit spring boot & thymeleaf. In meinem SearchStudent.html
Seite, es gibt 3 Felder als search-Parameter (Vorname, Nachname, Stadt). Meine Forderung ist, dass die Suche sollte funktionieren, selbst wenn ich geben Sie keine parameter (Search All) oder auf der Grundlage der Parameter. "Suche Alle" - Bedingung funktioniert, aber nicht sicher, wie Sie Sie ändern, um die controller zu arbeiten, wenn ich einige oder alle Parameter in der Suchbedingung.
SearchController
@Controller
@ComponentScan
public class SearchController {
@Autowired
protected StudentRepository repository;
@RequestMapping(value = {"/","/search"}, method = RequestMethod.GET)
public String search(Model model) {
model.addAttribute("student", new Student());
model.addAttribute("allStudents", (ArrayList<Student>)repository.findAll());
return "SearchStudent";
}
SearchStudent.html
<div class="panel-body">
<form th:object="${student}" th:action="@{/search}" action="#" method="get">
<input type="text" th:field="*{firstName}" class="form-control" placeholder="First Name" />
<div style="clear: both; display: block; height: 10px;"></div>
<input type="text" th:field="*{lastName}" class="form-control" placeholder="Last Name" />
<div style="clear: both; display: block; height: 10px;"></div>
<input type="text" th:field="*{city}" class="form-control" placeholder="City" />
<div style="clear: both; display: block; height: 10px;"></div>
<input type="submit" class="btn btn-danger pull-right" value="Search">
<input type="submit" class="btn btn-success pull-right" value="Clear">
</form>
</div>
InformationsquelleAutor Muhammad | 2016-07-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre form bindet die Formular Felder zu einer th:object ${student}, die input-parameter einer HTTP-POST-Methode, die in dem controller implementiert werden muss. Es sollte so etwas wie:
Sollten Sie auch die Methode Ihrer form, um 'post'
Es ein Formular mit input-Feld die Daten werden in ein Modell und gesendet werden sollen, werden per HTTP-POST finden Sie hier: http://www.w3schools.com/tags/att_form_method.asp
Alternativ können Sie eine zweite verschiedene GET-request mapping analysiert die form-Felder aus dem URL-Parameter. Verlassen Sie die form Methode '' fügen Sie ein weiteres GET-request mapping wie folgt:
Aber bewusst sein, die Einschränkungen und Auswirkungen auf die Sicherheit der Verwendung von form method='get' für das senden von Formular-Daten.
Ich denke, mein edit oben sollte helfen.. überprüfen Sie es bitte: 🙂
Ich wollte versuchen, dass als gut, aber kein Glück 🙁
Können Sie nach der aktuellen controller-code? Methode nicht erlaubt, gibt es keine Wunsch-Zuordnung für die Methode, die Sie angefordert. Sie sollten sowohl eine get-und post-Methode für die Ansicht, die Ihre form in (SearchStudent.html), wird die Anzeige der SearchStudent.html view POST senden das Formular die Daten aus der Ansicht.
Wert="/search") public ModelAndView doSearch(Student student){ List<Student> Studenten = (ArrayList<Student>)repository.findAll(); ModelAndView mv = new ModelAndView(); mv.addObject(Studenten); mv.setViewName("/SearchStudent"); return mv; }
InformationsquelleAutor Finbarr O'B