@Entity@Table(name="zczb_qyyh")@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)public class EntUser implements java.io.Serializable {@ManyToOne(cascade={CascadeType.PERSIST,CascadeType.MERGE})@JoinColumn(name="qyid")private EntBaseInfo enterpriseBaseInfo;//企業ID}就是 enterpriseBaseInfo中的 qyid屬性,我只能通過jsp表單<input name="user.enterpriseBaseInfo.qyId" type="hidden" value="10”>的形式轉到action中給它注入值,他為什么可以這樣注入enterpriseBaseInfo這個屬性都沒有實例化,如果不這么注入,我想通過user.getEnterpriseBaseInfo().setQyid();是否可行我不想在 user 中 enterpriseBaseInfo = new EnterpriseBaseInfo ()
2 回答

慕容3067478
TA貢獻1773條經驗 獲得超3個贊
struts是通過java的反射機制進行表單注入的。也就是說,你把表單提交給一個Action的時候,他會檢查你的action的屬性,如果你的action里有一個屬性為,private String userName;而你表單里有一個<input name="userName" type="hidden" value="10”>,這時候Action里有一個userName屬性,表單也有一個名字為userName的屬性,這時候struts就會自動把表單里的這個值賦給action的屬性。
這本質就是java的反射機制,如果你對這個機制不太了解的話可以去網上查一些資料。很多也很詳細。這個機制用途很廣,spring和hibernate也用到很多。
你用user.getEnterpriseBaseInfo().setQyid()這個當然也可以,但是這就失去了struts的意義,這是struts提供的一個減少編程的渠道。

慕田峪4524236
TA貢獻1875條經驗 獲得超5個贊
struts數據綁定,只要在action里寫上你想要傳的數據和它相應的get跟set方法并在form里寫明要傳給哪個屬性,struts就是自動把值傳過去。
添加回答
舉報
0/150
提交
取消