0

在提交按钮单击事件中,我调用了一个js函数来获取用户的输入并发送到服务器端进行处理。同时,我需要提交填写完整数据的表单。我把<button type="button">而不是<button type="submit">当我把'类型'作为提交它会得到错误。在那里,js运行良好,但字段值不是通过控制器方法获取的。表单提交和JavaScript函数调用提交按钮点击春天mvc?

我怎样才能做到这一点只有一个按钮? 这里是控制我的处理方法:

@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

可以共享js函数做讨厌的方式吗?你如何与控制器进行通信?使用ajax?或直接提交表格? – brk

+0

@ user2181397我正在使用ajax。这里是。 '$ .ajax({“url:”https:// localhost:8443/admin/packages/add_package“, data:{”test“:JSON.stringify(jsonObj)}, // type:”POST“ , 成功:功能(结果){ } });' – SMash

+0

尝试udpate代码的URL部分,并把网址:“./Add_package /” –

回答

0

我不认为你需要通过url作为https://localhost:8443/admin/packages/add_package,而不是只/add_package就足够了。

除了您可能还需要为Ajax响应提供url-pattern

其次,我不知道为什么你需要再次ModelAndView。您可以探索redirect属性

如果您使用button =“submit”,那么您需要使用event.preventDefault()来停止默认行为。我猜想使用button="button"将工作正常

+0

此处理程序方法用于向数据库提交新项目的详细信息。为什么我返回一个ModelAndView是为了提供与“添加”url模式映射的相同的视图页面。简单地说,我需要发生这两个调用这个函数获取一些值和提交表单在同一个按钮单击事件 – SMash

0

看到你应该提交表单后,已成功调用ajax ajax你应该手动提交表单使用jquery.submit()函数。其他明智它赢得'因为它可能会破坏ajax的功能,或者您可以在点击提交按钮后有延时功能。

这是喜欢你打电话。我在阿贾克斯成功提交功能,并保持按钮类型按钮

$("#target").submit(function(event) { 
    alert("Handler for .submit() called."); 
    event.preventDefault();showloadingif(); 
    setTimeout(function(){ $("#formId").submit(); }, 3000);   
}); 
+0

所以,我需要改变按钮类型提交?如果你可以请示范如何使用这个延时功能'? – SMash

+0

您能否详细说明函数showloadingif();这里有什么? – SMash