Spring MVC senden via javascript (ohne Taste), um den richtigen handler
Ich habe diesen Controller :
@Controller
@RequestMapping("/path/*")
public class MyController {
@RequestMapping(value = "/", method = RequestMethod.GET)
public String welcomeHandler(final Model model) {
//SOME CODE...
}
@RequestMapping(params = "reloadPage", value = "/", method = RequestMethod.POST)
public String reloadPageHandler(final Model model) {
//SOME CODE...
}
@RequestMapping(params = "search", value = "/", method = RequestMethod.POST)
public String processSubmit(final BindingResult result...)
//SOME CODE...
}
}
und diese jsp :
<form:form id="SearchFormController" method="post" modelAttribute="SearchFormBean">
<form:select path="searchCriteria.departmentId">
<form:options items="${addressDepartmentList}" itemValue="id" itemLabel="name" />
</form:select>
<p>
<button type="submit" name="reloadPage">Reload the page</button>
</p>
<form:select path="searchCriteria.cityId">
<form:options items="${addressCityList}" itemValue="id" itemLabel="name" />
</form:select>
<p>
<button type="submit" name="search">Submit</button>
</p>
</form:form>
Dieser code funktioniert einwandfrei, wenn ich auf den "Seite neu Laden" - Taste, die reloadPageHandler genannt wird.
Nun was ich erreichen will, ist zum entfernen dieser Schaltfläche und setzen Sie ein onchange-Ereignis auf meiner jsp-wie diese :
<form:select path="searchCriteria.departmentId" onchange="submit()">
<form:options items="${addressDepartmentList}" itemValue="id" itemLabel="name" />
</form:select>
Hier das problem, dass wenn das Formular abgeschickt wird, ist es die "processSubmit" - handler, der aufgerufen wird. Aber ich habe zu nennen die "reloadPageHandler".
Jede Idee, wie dies zu tun ? Danke !
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint es, dass die reloadPage-parameter fehlt. (Der ehemalige Schaltfläche name.)
Wird, wenn Sie ein ausgeblendetes Feld mit diesem Namen in der form, sollte es funktionieren:
Aber das problem mit diesem code ist noch immer die processSubmit-Handler aufgerufen werden. So eine Lösung könnte sein, ändern Sie die controller, die reloadPageHandler wird nur aufgerufen, wenn reload=true. Ändern Sie dann die onchange auf "dieses.form.reloadPage.value='true';submit()"