【发布时间】:2011-08-19 05:38:24
【问题描述】:
如果我在 JSF 页面中有一个通用 bean。像这样:
<h:outputLabel value="#{genericBean.content}"/>
而且这个 bean 不是托管 bean,即在 faces-config 中只有 2 个托管 bean:
<managed-bean>
<managed-bean-name>bean1</managed-bean-name>
<managed-bean-class>mb.Bean1</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>bean2</managed-bean-name>
<managed-bean-class>mb.Bean2</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
如果这两个 bean 都有 getContent() 方法:
public class Bean1{
public String getContent(){
return "Content of Bean 1";
}
}
和
public class Bean2{
public String getContent(){
return "Content of Bean 2";
}
}
然后我可以用其中之一更改 genericBean:
Bean1 bean1 = new Bean1();
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("genericBean", bean1);
或
Bean2 bean2 = new Bean2();
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("genericBean", bean2);
根据一些业务逻辑。
如您所见,我使用genericBean 只是作为面孔上下文中的标签。现在我的问题是:如何在应用程序开始时使用bean1 作为默认值来启动genericBean?
谢谢。
【问题讨论】: