2016-02-13 6 views
0

я реализовал CDI Bean, который наблюдая события из другого боба:Почему управляемый компонент CDI в faces-config.xml не зарегистрирован как обервер?

@SessionScoped 
public class FixedItemController implements Serializable { 
    .... 
    public void onWorkflowEvent(@Observes WorkflowEvent workflowEvent) throws AccessDeniedException { 
     logger.info("evaluate event..."); 
     .... 
    } 
    .... 
} 

Это прекрасно работает до тех пор, как я использую компонент в странице JSF с именем по умолчанию 'fixedItemController.

Но если я объявляю еще один экземпляр этого бина в лицах-config.xml, как это:

<managed-bean> 
     <managed-bean-name>myOrderItemController</managed-bean-name> 
     <managed-bean-class>org.imixs.marty.workflow.FixedItemController</managed-bean-class> 
     <managed-bean-scope>session</managed-bean-scope> 
     <managed-property> 
      <property-name>childItemProperty</property-name> 
      <property-class>java.lang.String</property-class> 
      <value>_orderItems</value> 
     </managed-property> 
    </managed-bean> 

второй экземпляр (myOrderItemController) не регистрируются автоматически в качестве наблюдателя для моего WorkflowEvent.

Что мне делать, чтобы гарантировать, что мой второй экземпляр, объявленный лицами-config.xml, будет немедленно создан и зарегистрирован в качестве наблюдателя для моего рабочего элемента?

ответ

1

faces-config.xml не регистрирует управляемые бисин CDI. Он регистрирует управляемые фанеры JSF. Фактически, ваш #{myOrderItemController} является управляемым компонентом JSF. Это похоже на то, что вы используете @ManagedBean вместо @Named. Объект управления JSF-бобами не просматривает аннотацию @Observes CDI.

Держите его управляемым бидом CDI. Независимо от того, что вы пытались решить, для которого вы считали, что регистрация его в faces-config.xml будет правильным решением, нужно решить по-другому, используя API CDI, а не API JSF.

+0

Спасибо, что вы имеете в виду, что мне нужно работать с beans.xml дескриптором вместо faces-config.xml? – Ralph

+0

Зависит от конкретных функциональных требований. Обычно вы используете исключительно аннотации/квалификаторы/производители и оставляете beans.xml для чего это. – BalusC

 Смежные вопросы

  • Нет связанных вопросов^_^