实体类:
Substance:物资
private Integer id;
private String name;
Parts:配件
private Integer id;
private String name;
JSP页面:
<label class="control-label">配件id:</label>
<input type="text" name="parts.id" value="${parts.id}" >
<label class="control-label">配件名称:</label>
<input type="text" name="parts.name" value="${parts.name}" >
<label class="control-label">物资id:</label>
<input type="text" name="substance.id" value="${substance.id}" >
<label class="control-label">物资名称:</label>
<input type="text" name="substance.name" value="${substance.name}" >
Controller:
webDataBinder.setFieldDefaultPrefix(“substance.”);来标明jsp中用substance.id来传送参数,看清楚上面有“.”。
这里用@InitBinder来绑定参数,由@InitBinder表示的方法,可以对WebDataBinder对象进行初始化。WebDataBinder是DataBinder的子类,用于完成由表单到JavaBean属性的绑定。@InitBinder方法不能有返回值,它必须盛名为void。@InitBinder方法的参数通常是WebDataBinder,@InitBinder可以对WebDataBinder进行初始化。注意:如果两个对象之间是有关联关系的(比如B对象在A对象里是做为对象属性的),这样inibinder这2个chontroller就不用写了
@RequestMapping(value="action")
public ModelAndView update(Substance substance,Parts parts){
substanceService.updateSubstance(substance);
partsService.updateParts(parts);
//这里是执行了2次更新的方法,因为这两个实体之间没有关联关系,如果2个是有关系的,可以执行一个就可以了
}
@InitBinder("substance")
public void userBinder(WebDataBinder webDataBinder){
webDataBinder.setFieldDefaultPrefix("substance.");
}
@InitBinder("parts")
public void userDetailBinder(WebDataBinder webDataBinder){
webDataBinder.setFieldDefaultPrefix("parts.");
}