Когда вы создаете экземпляр MyBean
, используя new
, он не будет искать Faces-Config. и он просто создаст объект с помощью конструктора.
Если вы используете jsf2.0
make bean для инициализации, когда ваш контекст инициализируется с помощью
@ManagedBean(eager=true)
и извлеките экземпляр Bean
с карты области. если область его применения ограничена.
MyBean mb = (MyBean)FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get("beanName");
Обновление:
ваш управляемый боб должен выглядеть так:
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(eager="true")
@RequestScoped
public class MyBean {
если вы просто хотите использовать свой компонент в другом компоненте, тогда, как BalusC предложил просто ввести его и получить заполненное значение, без использования new
например: если вы хотите, чтобы ваш MyBean
популировал в SomeOtherBean
, тогда
@ManagedBean()
@RequestScoped
public class SomeOtherBean {
@ManagedProperty(value="#{myBean}")
private MyBean myBean;
//getters & setters of myBean
Обновление
для jsf 1.2, аннотаций нет, вам нужно настроить faces-config.xml
, как показано ниже
<managed-bean>
<managed-bean-name>myBean</managed-bean-name>
<managed-bean-class>com.example.my.MyBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>someAnotherBean</managed-bean-name>
<managed-bean-class>com.example.some.AnotherBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>myBean</property-name>
<value>#{myBean}</value>
</managed-property>
</managed-bean>