如何從SpringMVC的JSP頁面傳多個物件
阿新 • • 發佈:2019-01-22
實體類:
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.");
}