在提交按钮单击事件中,我调用js函数来获取用户的输入并发送到服务器端进行处理。同时,我需要提交包含所有填充数据的表单。我将<button type="button">
改为<button type="submit">
,因为当我将'type'作为提交时,它会收到错误。在那里,js运行良好,但控制器方法不会获取字段值。
如何只使用一个按钮来完成此操作? 这是我在控制器中的处理程序方法:
@RequestMapping(value = "/add_package")
public
@ResponseBody
ModelAndView addPackage(@ModelAttribute("newPackage") Package newPackage,
HttpServletRequest request) {
LOGGER.error("package objct {}",newPackage);// here I am getting objects with null values !!
String s = request.getParameter("test");
LOGGER.trace("test val = {}", s);
ObjectMapper objectMapper = new ObjectMapper();
List<Package> cats = null;
String pkgName = newPackage.getPackName();
try {
...
} catch (Exception e) {
..
LOGGER.error("error in package add {}", e.getMessage());
}
return new ModelAndView(new RedirectView("add"));
}
以下是按钮的jsp代码:
<form:button type="button" class="btn btn-success" id="btnAddNewPkg" onclick="contentPackge()"><span class="glyphicon glyphicon-plus"></span>
添加
答案 0 :(得分:0)
我认为您不需要将url
作为https://localhost:8443/admin/packages/add_package
传递而只需/add_package
就足够了。
除此之外,您可能还需要提供url-pattern
其次,对于ajax响应,我不确定为什么你再次需要ModelAndView
。您可以浏览redirect
属性
如果您使用button =“submit”,则需要使用event.preventDefault()
来停止默认行为。我想使用button="button"
可以正常工作
答案 1 :(得分:0)
看到你应该在成功调用ajax之后提交表单,这是在ajax的成功函数中你应该使用jquery.submit()函数手动提交表单。否则它不会工作。因为它可能破坏ajax的功能。或者你可以在点击提交按钮后有时间延迟功能。
这是一种令人讨厌的方式。我更喜欢你在ajax成功中调用submit函数并将按钮类型保持为按钮
$( "#target" ).submit(function( event ) {
alert( "Handler for .submit() called." );
event.preventDefault();showloadingif();
setTimeout(function(){ $("#formId").submit(); }, 3000);
});