gpt4 book ai didi

java - 如何让一个类继承通过托管 bean 设置的另一个类的值

转载 作者:行者123 更新时间:2023-12-02 11:17:18 27 4
gpt4 key购买 nike

我在另一个类中使用一个 Java 类时遇到了一些困难。

对于我的应用程序,我为实用程序类设置了一个托管 bean:

<managed-bean>
<managed-bean-name>utilBean</managed-bean-name>
<managed-bean-class>com.acme.domino.utils.Utils</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>debug</property-name>
<value>false</value>
<property-class>java.lang.Boolean</property-class>
</managed-property>
<managed-property>
<property-name>log</property-name>
<value>false</value>
<property-class>java.lang.Boolean</property-class>
</managed-property>
</managed-bean>

这个类有一个写入日志的方法。

现在我想在另一个类中使用这个类。所以我的想法是将上面的托管 bean 注入(inject)另一个类的另一个托管 bean 中。

<managed-bean>
<managed-bean-name>orderBean</managed-bean-name>
<managed-bean-class>com.acme.domino.app.Order</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>utils</property-name>
<value>#{utilsBean}</value>
</managed-property>
</managed-bean>

Order 类有一个字段

public Utils utils;
public Utils getUtils() {
return utils;
}

public void setUtils(Utils utils) {
this.utils = utils;
}

但是在构造函数中它已经出错了:

public Order() throws Exception {
super();
utils = new Utils();

System.out.println("log?? " + utils.log);
..}

看来在 Utils 类的构造函数中我必须以某种方式设置这两个字段:

public Utils() {
this.debug = true;
this.log = true;
}

在 Utils 类中,字段的值为 false(通过托管属性设置。

在 Orders 类中,字段值为 true(通过 Utils 构造函数设置)。

有没有办法避免在 Utils 构造函数中设置字段?或者是否可以避免在 Order 类中定义 Utils 类的新实例?

当我没有在 Utils 构造函数类中设置字段时收到的消息是:

javax.faces.FacesException:无法实例化类:'com.acme.domino.app.orderBean'.. null无法实例化类:'com.acme.domino.app.orderBean'.. nullcom.acme.domino.app.orderBean 类:java.lang.NullPointerException

我希望我的 Order 类继承通过托管 Bean 设置的 Utils 类的设置。

最佳答案

您的 faces-config.xml 有一个拼写错误。您正在尝试注入(inject)<value>#{utilsBean}</value>但是utilsBean不是正确的引用,utilBean是。没有。那么稍后在构造函数中执行的操作就不再需要了。托管 bean 之所以被称为托管,是因为框架在它们被“调用”时实例化它们。因此,框架将调用 setUtils Order 类并传递已根据 faces-config.xml 定义创建的 Utils bean 对象。

关于java - 如何让一个类继承通过托管 bean 设置的另一个类的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50183012/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com