Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在应用程序开始时将某个托管bean作为默认值启动“genericBean”?_Java_Jsf - Fatal编程技术网

Java 如何在应用程序开始时将某个托管bean作为默认值启动“genericBean”?

Java 如何在应用程序开始时将某个托管bean作为默认值启动“genericBean”?,java,jsf,Java,Jsf,如果我在JSF页面中有一个通用bean。像这样: <h:outputLabel value="#{genericBean.content}"/> 及 然后我可以用其中一个来更改genericBean: Bean1 bean1 = new Bean1(); FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("genericBean", bean1); 或 根据一些商业逻辑 正如您所见

如果我在JSF页面中有一个通用bean。像这样:

<h:outputLabel value="#{genericBean.content}"/>

然后我可以用其中一个来更改genericBean:

Bean1 bean1 = new Bean1();
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("genericBean", bean1);

根据一些商业逻辑

正如您所见,我正在使用
genericBean
作为faces上下文中的标签。现在我的问题是:如何在应用程序开始时将
bean1
作为默认值启动
genericBean


谢谢。

您可以使用应用程序范围(托管)bean,并在构造函数中为泛型bean设置默认值。

您可以使用
ServletContextListener
来实现这一点

public class CustomApplicationContextListener implements ServletContextListener {

    private static final String FOO = "foo";

    public void contextInitialized(ServletContextEvent event) {
        Bean1 bean1 = new Bean1();
        event.getServletContext().setAttribute("genericBean", bean1 );
    }

    public void contextDestroyed(ServletContextEvent event) {

                event.getServletContext().removeAttribute("genericBean");

    }

}
web.xml

<listener>
    <listener-class>com.yourpackage.CustomApplicationContextListener</listener-class>
</listener>
Bean1 bean1 = new Bean1();
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("genericBean", bean1);
Bean2 bean2 = new Bean2();
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("genericBean", bean2);
public class CustomApplicationContextListener implements ServletContextListener {

    private static final String FOO = "foo";

    public void contextInitialized(ServletContextEvent event) {
        Bean1 bean1 = new Bean1();
        event.getServletContext().setAttribute("genericBean", bean1 );
    }

    public void contextDestroyed(ServletContextEvent event) {

                event.getServletContext().removeAttribute("genericBean");

    }

}
<listener>
    <listener-class>com.yourpackage.CustomApplicationContextListener</listener-class>
</listener>
@ManagedBean(name="genericBean", eager=true)
@ApplicationScoped
public class GenericBean {
 ...
}