我的代码如下所示,当我输入输入字段为错误的值时,验证器使输入bean值无效,但是在视图中没有显示错误消息。
控制器
@RequestMapping(value = "/AddInventory.html", method = RequestMethod.POST)
public ModelAndView inventorymgmt(@Valid Itemtype itemTypeForm, BindingResult result, Map<String, Object> model) throws Exception {
logger.log(Level.OFF, "Add Inventory called with inventory details ####### ." + itemTypeForm);
if (result.hasErrors()) {
logger.log(Level.OFF, "Error occured while inserting the reconrd for the item type." + result.getAllErrors());
ModelAndView modelAndView = new ModelAndView("add-item_category");
modelAndView.addAllObjects(model);
return modelAndView;
}
else {
logger.log(Level.OFF, "Insert result ####### ." + itemTypeDAO.insert(itemTypeForm));
return new ModelAndView("redirect://item_category.html");
}
}
查看
<form:form action="AddInventory.html" method="POST" commandName="itemTypeForm">
<form:errors path="*" cssClass="errorblock" element="div" />
<div class="col-md-9">
<div class="catagory-main-box top-radius">
<div class="cat-box-title cat-title-font top-radius">Item Category </div>
<div class="row tb-margin">
<div class="col-sm-2"></div>
<div class="col-sm-8 visible-lg visible-md visible-sm">
<div class="form-group">
<label class="col-sm-4 col-xs-12 control-label search-text">Name:</label>
<div class="col-sm-8 col-xs-12">
<form:input type="text" class="form-control" path="name" placeholder="Name"/>
<form:errors path="name" cssClass="error" />
</div>
</div>
<div class="form-group">
<label class="col-sm-4 col-xs-12 control-label search-text"> Description:</label>
<div class="col-sm-8 col-xs-12">
<form:input type="text" class="form-control" path="description" placeholder="Description"/>
<form:errors path="description" cssClass="error" />
</div>
</div>
</div>
<div class="col-sm-8 visible-xs">
<div class="form-group">
<div class="col-sm-8 col-xs-12">
<form:input type="text" class="form-control" path="name" placeholder="Name"/>
<form:errors path="name" cssClass="error" />
</div>
</div>
<div class="form-group">
<div class="col-sm-8 col-xs-12">
<form:input type="text" class="form-control" path="description" placeholder="Description"/>
</div>
</div>
</div>
<div class="col-sm-2"></div>
</div>
<div class="row text-pad-top visible-lg visible-md visible-sm">
<div class="div-center">
<button type="button" class="btn btn-orange" onclick="submitDetailsForm();">Save</button>
<button type="button" class="btn btn-orange" onclick="javascript:history.back();">Cancel</button>
</div>
</div>
<div class="row text-pad-top visible-xs ">
<div class="div-center-xs">
<button type="button" class="btn btn-orange" onclick="submitDetailsForm();">Save</button>
<button type="button" class="btn btn-orange" onclick="javascript:history.back();">Cancel</button>
</div>
</div>
</div>
</div>
</form:form>
豆
package com.tss.ocean.pojo;
// Generated 4 Aug, 2014 6:30:10 PM by Hibernate Tools 3.2.1.GA
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.NotEmpty;
/**
* Itemtype generated by hbm2java
*
* @author Bhavik Ambani
*/
public class Itemtype implements java.io.Serializable {
private Integer id;
@NotEmpty(message = "Please enter item name.")
@Size(min = 10, max = 45, message = "Item name must between 1 and 45 characters")
private String name;
@Size(min = 0, max = 45, message = "Item description must between 0 and 65535 characters")
private String description;
public Itemtype() {
}
public Itemtype(String name, String description) {
this.name = name;
this.description = description;
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return this.description;
}
public void setDescription(String description) {
this.description = description;
}
@Override
public String toString() {
return "Itemtype{" + "id=" + id + ", name=" + name + ", description=" + description + '}';
}
}
答案 0 :(得分:3)
将控制器方法更改为以下内容,只需在@Valid
之前添加:
@ModelAttribute("itemTypeForm") // Pass your Model Attribute here. I assumed it to be `itemTypeForm`.
控制器代码在这里
@RequestMapping(value = "/AddInventory.html", method = RequestMethod.POST)
public ModelAndView inventorymgmt(@ModelAttribute("itemTypeForm") @Valid Itemtype itemTypeForm, BindingResult result, Map<String, Object> model) throws Exception {
logger.log(Level.OFF, "Add Inventory called with inventory details ####### ." + itemTypeForm);
if (result.hasErrors()) {
logger.log(Level.OFF, "Error occured while inserting the reconrd for the item type." + result.getAllErrors());
ModelAndView modelAndView = new ModelAndView("add-item_category");
modelAndView.addAllObjects(model);
return modelAndView;
}
else {
logger.log(Level.OFF, "Insert result ####### ." + itemTypeDAO.insert(itemTypeForm));
return new ModelAndView("redirect://item_category.html");
}
}