無論是將Action中的變量渲染頁面中,或者從request中將內(nèi)容回傳到Action中變量的過程,統(tǒng)稱參數(shù)綁定。  

   1. 最原始的Struts2會(huì)直接賦值A(chǔ)ction中的變量。 如hello.action?id=1,會(huì)將action中的id屬性賦值。
   2. 如果參數(shù)較多,而且都屬于同一個(gè)對(duì)象的,可以將所有屬性都放入一個(gè)對(duì)象中,比如hello.action?user.id
   會(huì)為action中的User對(duì)象的id屬性賦值。
   3. ModelDriven接口,如果不想寫太多"user."前綴,如${user.id},可以實(shí)現(xiàn)ModelDriven接口的getModel函數(shù),
   返回user對(duì)象。則Struts2碰到{id}時(shí),就會(huì)嘗試調(diào)用getModel() 獲得user對(duì)象再獲取其id屬性。
   4. Prepareable接口,還有一種情況Hibernate常用的情況,一個(gè)對(duì)象可能有很多屬性(比如有10個(gè)屬性),
   但頁面上可能只顯示5個(gè)屬性的輸入框。如果按上面的方法,先new一個(gè)User類,然后從頁面上賦值。
   保存此對(duì)象時(shí)就會(huì)將不在頁面上修改的5個(gè)屬性清空了。這時(shí)就需要兩次的binding,一開始user變量為空,
   只綁定了action的id屬性,然后在prepare()函數(shù)中查出有完整10個(gè)屬性的對(duì)象,然后二次綁定時(shí)再將頁面的那5個(gè)屬性
   復(fù)制到user對(duì)象中。
      prepare()函數(shù)有兩種作用,一種專門為了二次binding,一種是作為公共的數(shù)據(jù)準(zhǔn)備函數(shù)。但是,
      一個(gè)action內(nèi)有多個(gè)method,不是每一個(gè)method都需要執(zhí)行prepare,比如list()方法,如果這種method較多,
      或者會(huì)造成沖突時(shí),還有另外一種方式來定義二次binding函數(shù)。比如prepareSave() 函數(shù),就會(huì)默認(rèn)的在執(zhí)行save()
      前執(zhí)行,此時(shí),專門實(shí)現(xiàn)prePareMethodName() 方法再調(diào)度一個(gè)內(nèi)部的prepare函數(shù),而將prepare()函數(shù)留空。