@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
提交
取消