您好,数据提交有问题。 因为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";
}
}