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

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中

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提供的一个减少编程的渠道。
参考技术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对象里面的中文参数在调试时显示成员变量是乱码?

Spring AOP为啥不能拦截从对象内部调用的方法

java里的静态成员变量是放在了堆内存还是栈内

为啥我不能更改 unordered_map 返回的对象的成员变量?

static 静态变量,静态方法

为啥在单个语句中分配动态对象的成员变量会导致 PHP 中的语法错误?