在spring mvc中点击提交按钮的表单提交和javascript函数?

时间:2016-11-17 05:56:22

标签: javascript spring-mvc model-view-controller form-submit spring-form

在提交按钮单击事件中,我调用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>

添加    

2 个答案:

答案 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);         
});