1. 程式人生 > >如何從SpringMVC的JSP頁面傳多個物件

如何從SpringMVC的JSP頁面傳多個物件

實體類:

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.");

}