为了账号安全,请及时绑定邮箱和手机立即绑定

被这个问题困扰很久了,为什么对象的成员变量是一个对象,可以通过表当的形式给他注入值?

被这个问题困扰很久了,为什么对象的成员变量是一个对象,可以通过表当的形式给他注入值?

互换的青春 2021-11-19 15:11:28
@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提供的一个减少编程的渠道。

查看完整回答
反对 回复 2021-11-24
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

struts数据绑定,只要在action里写上你想要传的数据和它相应的get跟set方法并在form里写明要传给哪个属性,struts就是自动把值传过去。

查看完整回答
反对 回复 2021-11-24
  • 2 回答
  • 0 关注
  • 391 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信