Я немного борюсь с использованием одного класса Java в другом классе.
Для моего приложения я настроил управляемый компонент для служебного класса:
<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>
В этом классе есть метод для записи в журнал.
Теперь я хотел бы использовать этот класс в другом классе. Поэтому я хочу добавить управляемый компонент выше в другой управляемый компонент для другого класса.
<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 значения для полей являются ложными (как установлено через управляемые свойства.
В классе Orders значения для полей являются истинными (как установлено через конструктор Utils).
Есть ли способ избежать установки полей в конструкторе Utils? Или можно избежать определения нового экземпляра класса Utils в классе Order?
Сообщение, которое я получаю, когда не устанавливаю поля в классе конструктора Utils:
javax.faces.FacesException: Не удается создать экземпляр класса: 'com.acme.domino.app.orderBean' .. null
Не могу создать экземпляр класса: 'com.acme.domino.app.orderBean' .. null
Класс com.acme.domino.app.orderBean: java.lang.NullPointerException
Мне бы хотелось, чтобы мой класс Order наследовал настройки класса Utils, установленные через управляемый компонент.