被这个问题困扰了,就是为啥对象的成员变量是一个对象,为啥可以通过表当的形式给他注入值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了被这个问题困扰了,就是为啥对象的成员变量是一个对象,为啥可以通过表当的形式给他注入值相关的知识,希望对你有一定的参考价值。
@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 ()
解决了重重感谢
ssh中
这本质就是java的反射机制,如果你对这个机制不太了解的话可以去网上查一些资料。很多也很详细。这个机制用途很广,spring和hibernate也用到很多。
你用user.getEnterpriseBaseInfo().setQyid()这个当然也可以,但是这就失去了struts的意义,这是struts提供的一个减少编程的渠道。 参考技术A struts数据绑定,只要在action里写上你想要传的数据和它相应的get跟set方法并在form里写明要传给哪个属性,struts就是自动把值传过去。 参考技术B 值传递
static 静态变量,静态方法
Java 之静态变量
引入
一个类可以创建多个对象 ,每个对象都拥有自己的成员,各自互相独立。然而在某些特殊情况下,我们希望该类的所有对象共享一个成员,这个时候就可以把这个成员设置为static
在Java中,被static 修饰的成员称为静态成员,它是属于整个类的,在类被加载的时候被分配到静态区(在堆里面)。这个时候属于它就不单独属于某个特定的对象了,即被类的所有对象所共享。静态成员可以使用类名直接访问,当然也可以使用对象命进行访问,介于它的特殊性,更推荐使用类名进行访问。
运行结果:
Java 之静态方法
与静态变量一样。我们可以使用static 修饰方法,称之为静态方法 。我们之前一直写的mian 方法仔细看看,它就是一个静态方法,静态方法使用如下:
运行结果
使用静态方法时,要注意:
1、静态方法可以调用同类中的其他成员,但不能直接调用非静态成员,如:
2、但是如果希望静态方法中调用非静态成员,可以通过创建类的对象 ,然后通过对象来访问非静态变量。如
3、普通的方法中,可以直接访问同类中的非静态变量和静态变量,如下
4、静态方法中,不能直接调用非静态方法,但是可以通过对象来访问非静态方法。如:
参考大佬博客:https://www.cnblogs.com/dianqijiaodengdai/p/6144698.html
然后自己再敲一遍~~
以上是关于被这个问题困扰了,就是为啥对象的成员变量是一个对象,为啥可以通过表当的形式给他注入值的主要内容,如果未能解决你的问题,请参考以下文章
为啥jsp页面中传入JavaBean对象里面的中文参数在调试时显示成员变量是乱码?