我尝试验证一个简单的表单。验证执行得很好,但结果页面不显示错误。 我使用velocity来渲染页面。 我以春季网站上的PetClinic项目为例。
当我点击“发布表单”按钮时,这是我的控制器:
@Controller
@RequestMapping("/subscription")
public class SubscriptionController {
@RequestMapping(value = "/newCustomer", method = RequestMethod.POST)
public String processSubmit(@ModelAttribute Customer customer, BindingResult result, SessionStatus status) {
new CustomerValidator().validate(customer, result);
if (result.hasErrors()) {
return "subscription";
}
else {
status.setComplete();
return "redirect:/admin";
}
}
}
当我进行调试时,我看到了错误。我已在订阅页面上成功重定向,但未显示错误。
我的网页(简化):
...
#springBind("customer")
#springShowErrors("<br/>" "")
<form class="form-horizontal" method="post" action="#springUrl("/subscription/newCustomer/")">
....
<!-- Button -->
<div class="controls">
<button class="btn btn-primary">#springMessage("website.subscription.signup")</button>
</div>
</form>
...
如果您还有其他需要,请随时告诉我。谢谢你的帮助!几天以来我一直坚持这个。
答案 0 :(得分:0)
编辑: 我终于找到了错误。它是使用springBind标签。我不太明白你需要绑定字段来显示相关的错误。以下是twitter bootstrap框架的一个字段的固定代码。
#springBind("customer.name")
<div class="control-group #if(${status.error})error#end">
<!-- Prepended text-->
<label class="control-label">#springMessage("website.subscription.name")</label>
<div class="controls">
<div class="input-prepend">
<span class="add-on"><i class="icon-user"></i></span>
<input class="input-xlarge"
placeholder="John Doe" id="name" name="name" type="text">
</div>
<p class="help-block">
#springShowErrors("<br/>" "")
</p>
</div>
</div>
springShowErrors(...)将显示与POJO客户的字段名称相关的所有错误。