两个表单一个提交,讨厌的嵌套表单

时间:2017-02-15 14:14:58

标签: html forms jsp

您好,数据提交有问题。 因为Spring,我需要输入字段不止一个表单。 嵌套表单不起作用,我得到拳头部分输入null或秒 调试日志说:

User [id = null,name = null,email = null] true Bookingnumber [bookingnumber = 123.456,123.456]

是否有更好的解决方案来提交来自多个输入的数据?

<c:choose>
    <c:when test="${userForm['new']}">
        <h1>New Booking</h1>
    </c:when>
    <c:otherwise>
        <h1>Update Traveller</h1>
    </c:otherwise>
</c:choose>
<br />

<spring:url value="/users" var="userActionUrl" />
<form:form class="form-horizontal" method="post">

    <form:form class="form-horizontal" method="post"
        modelAttribute="userForm" action="${userActionUrl}">

        <form:hidden path="id" />

        <spring:bind path="name">
            <div class="form-group ${status.error ? 'has-error' : ''}">
                <label class="col-sm-2 control-label">Name</label>
                <div class="col-sm-10">
                    <form:input path="name" type="text" class="form-control "
                        id="name" placeholder="Name" />
                    <form:errors path="name" class="control-label" />
                </div>
            </div>
        </spring:bind>

        <spring:bind path="email">
            <div class="form-group ${status.error ? 'has-error' : ''}">
                <label class="col-sm-2 control-label">Email</label>
                <div class="col-sm-10">
                    <form:input path="email" class="form-control" id="email"
                        placeholder="Email" />
                    <form:errors path="email" class="control-label" />
                </div>
            </div>
        </spring:bind>


    </form:form>
    <!-- TODO bookingnumber in new form bookingForm ... buttons?-->
    <form:form class="form-horizontal" method="post"
        modelAttribute="bookingnumberForm" action="${userActionUrl}">
        <form:hidden path="bookingnumber" />
        <spring:bind path="bookingnumber">
            <div class="form-group ${status.error ? 'has-error' : ''}">
                <label class="col-sm-2 control-label">Bookingnumber</label>
                <div class="col-sm-10">
                    <form:input path="bookingnumber" class="form-control"
                        id="bookingnumber" placeholder="Bookingnumber" />
                    <form:errors path="bookingnumber" class="control-label" />
                </div>
            </div>
        </spring:bind>
        <div class="form-group">
            <!-- TODO move buttons -->
            <div class="col-sm-offset-2 col-sm-10">
                <c:choose>
                    <c:when test="${userForm['new']}">
                        <button type="submit" class="btn-lg btn-primary pull-right">Add</button>
                    </c:when>
                    <c:otherwise>
                        <button type="submit" class="btn-lg btn-primary pull-right">Update</button>
                    </c:otherwise>
                </c:choose>
            </div>
        </div>

    </form:form>
    <!--  -->
</form:form>

编辑:

@RequestMapping(value = "/users", method = RequestMethod.POST)
  public String saveOrUpdateUser(@ModelAttribute("userForm") @Validated   User user, @ModelAttribute("bookingnumberForm") @Validated   Bookingnumber bookingnumber,
        BindingResult result, Model model, final RedirectAttributes redirectAttributes) {

    logger.debug("saveOrUpdateUser() : {}", user);

    if (result.hasErrors()) {
        populateDefaultModel(model);
        return "users/userform";
    } else {

        redirectAttributes.addFlashAttribute("css", "success");
        if(user.isNew()){
            redirectAttributes.addFlashAttribute("msg", "User added successfully!");
        }else{
            redirectAttributes.addFlashAttribute("msg", "User updated successfully!");
        }

        userService.saveOrUpdate(user);
        bookingnumberService.save(bookingnumber);

        // POST/REDIRECT/GET
        return "redirect:/users/" + user.getId();

        // POST/FORWARD/GET
        // return "user/list";

    }

}

另见:values in multiple tables spring validation prob

0 个答案:

没有答案