Spring MVC通过javascript(不带按钮)提交给正确的处理程序
Spring MVC submit via javascript (without button) to the correct handler
我有这个控制器:
@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...
}
}
这个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>
这段代码运行得非常好,当我单击"重新加载页面"按钮时,就会调用reloadPageHandler。
现在,我想要实现的是删除这个按钮,并在我的jsp上放置一个onchange事件,如下所示:
<form:select path="searchCriteria.departmentId" onchange="submit()">
<form:options items="${addressDepartmentList}" itemValue="id" itemLabel="name" />
</form:select>
这里的问题是,当提交表单时,调用的是"processSubmit"处理程序。但我必须调用"reloadPageHandler"。
你知道怎么做吗?谢谢
似乎缺少reloadPage参数。(前一个按钮的名称。)
如果您将具有此名称的隐藏字段放入表单中,它应该可以工作:
<form:form id="SearchFormController" method="post" modelAttribute="SearchFormBean">
<input type="hidden" name="reloadPage" value=""/>
<form:select path="searchCriteria.departmentId" onchange="submit()">
<form:options items="${addressDepartmentList}" itemValue="id" itemLabel="name" />
</form:select>
</form:form>
但这段代码的问题仍然是,总是会调用processSubmit处理程序。因此,一个解决方案可以是更改控制器,即只有当reload=true时才调用reloadPageHandler。然后将onchange更改为"this.form.reloadPage.value='true';submit()"
相关文章:
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 如何在咖啡脚本中识别提交按钮,Rails 3应用程序
- 纯javascript的进度图像加载程序仅当用户单击提交html表单时
- 未调用表单提交处理程序
- 可以'不要在express/angular应用程序上提交表格
- 在谷歌应用程序中获取最新表单提交的responseID
- 即使表单无效,也会调用HTML5表单提交处理程序
- Meteor:具有两个提交按钮的表单(确定事件处理程序中单击的按钮)
- 搜索诸如提交完成事件之类的内容以关闭加载程序
- 提交Chrome扩展程序表单
- 在焦点处理程序中修改表单时不触发表单提交
- 不能在按钮提交处理程序中使用变量
- 每次提交时,Ajax 表单开始和成功处理程序的调用次数会连续增加
- 如何将第二个函数绑定到 jQuery 验证提交处理程序
- 如何在提交处理程序回调中访问主干视图
- 提交表单并绕过 jQuery 验证提交处理程序
- 成功提交时显示引导程序的警报
- 客户表单提交日期时间,MVC应用程序
- $_POST 不在提交 Web 应用程序上存储数据
- jQuery 验证插件:相同的表单,不同的验证提交处理程序