2014-12-02 2 views
-1

В Java 6 Я хотел бы написать следующий код для доступа к приложению области действия боба из запроса области действия фасоли:Как я могу вставить JSF-компонент в другой JSF-компонент в Java 5?

Применения контекстной боба:

@Named 
@ApplicationScoped 
public class Bean1 
{ 
    ... 
} 

Запроса контекстного боба:

@Named 
@RequestScoped 
public class Bean2 
{ 
    @Inject 
    private Bean1 bean1; 
} 

Как могу ли я сделать это на Java 5 с использованием JSF, у которого нет этих аннотаций?

+0

Аннотация @Inject не существует в Java 5. Пожалуйста, внимательно прочитайте мой вопрос. –

ответ

0

Я был в состоянии сделать это путем настройки Bean1 как управляемое -свойство в моих гранях-config.xml:

<managed-bean> 
    <managed-bean-name>bean2</managed-bean-name> 
    <managed-bean-class>mypackage.Bean2</managed-bean-class> 
    <managed-bean-scope>request</managed-bean-scope> 
    <managed-property> 
     <property-name>bean1</property-name> 
     <property-class>mypackage.Bean1</property-class> 
     <value>#{bean1}</value> 
    </managed-property> 
    </managed-bean> 

Затем я добавил набор аксессор метода в моем Bean2 классе:

public class Bean2 
{ 
    private Bean1 bean1 = null; 

    public void setBean1(Bean1 b) { this.bean1 = b; } 
} 

Ключ в том, что свойство bean1 будет недоступно до тех пор, пока не будет выполнено инъектирование, поэтому его нельзя ссылаться в конструкторе Bean2.

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