Java Xpages:如何确保我的cacheBean只加载一次

Java Xpages:如何确保我的cacheBean只加载一次,java,xpages,managed-bean,Java,Xpages,Managed Bean,仍然在努力正确地制作cacheBean。根据我所读到的,我想我希望这个bean是一个单身汉。只需要 一个例子。使用它来获取常用的关键字等 我使用这个模式来制作CacheBean,并使用了一个实用方法 如果通过将其放入Faces配置中使其成为managedBean,那么我可以轻松获得模型的值 <xp:text escape="true" id="computedField1" value="#{CacheBean.models}"></xp:text>

仍然在努力正确地制作cacheBean。根据我所读到的,我想我希望这个bean是一个单身汉。只需要 一个例子。使用它来获取常用的关键字等

我使用这个模式来制作CacheBean,并使用了一个实用方法

如果通过将其放入Faces配置中使其成为managedBean,那么我可以轻松获得模型的值

<xp:text escape="true" id="computedField1"          
value="#{CacheBean.models}"></xp:text>

我至少可以告诉你为什么它没有编译

值={Cache.getCurrentInstance.models}

那是艾尔。所以不应该有一个get或一个get。你想要

值={Cache.currentInstance.models}


检查您的var名称,因为我认为您使用的是CacheBean而不是Cache。

我至少可以告诉您为什么它没有编译

值={Cache.getCurrentInstance.models}

那是艾尔。所以不应该有一个get或一个get。你想要

值={Cache.currentInstance.models}


并检查您的var名称,因为我认为您使用的是CacheBean而不是Cache。

当bean具有正确的作用域时,您可以在创建bean时直接访问bean

private static final String BEAN_NAME = "CacheBean";

//access to the bean
    public static CacheBean get() {
            return (CacheBean) JSFUtil.resolveVariable(BEAN_NAME);
    }

//in my JSFUtil class I have the method
public static Object resolveVariable(String variable) {
        return FacesContext.getCurrentInstance().getApplication().getVariableResolver().resolveVariable(FacesContext.getCurrentInstance(), variable);
    }
因此,在Java类中,您可以调用

CacheBean.get().models
在EL中,您可以使用

CacheBean.models

当bean具有正确的作用域时,您可以在创建bean时直接访问它

private static final String BEAN_NAME = "CacheBean";

//access to the bean
    public static CacheBean get() {
            return (CacheBean) JSFUtil.resolveVariable(BEAN_NAME);
    }

//in my JSFUtil class I have the method
public static Object resolveVariable(String variable) {
        return FacesContext.getCurrentInstance().getApplication().getVariableResolver().resolveVariable(FacesContext.getCurrentInstance(), variable);
    }
因此,在Java类中,您可以调用

CacheBean.get().models
在EL中,您可以使用

CacheBean.models

我真的不知道你在用CacheBean做什么。如果您只是加载到其他.nsf文件的文件路径,我不确定您是否需要担心这里的单例问题。您可以为类似的东西提供一个appScoped bean。因为每个人都使用相同的appScope,所以应该只有一个bean对象的实例。我希望能够在整个应用程序中获取这些值,并且只加载一次。我认为使用应用程序范围的托管bean可以工作吗?会吗?如果CacheBean中没有特定于用户的数据,那么给它一个ApplicationScope,当有特定于用户的数据时,它应该是SessionScope。运行时将处理bean的实例化。EL中的调用将是CacheBean。Model我真的不确定你在用CacheBean做什么。如果您只是加载到其他.nsf文件的文件路径,我不确定您是否需要担心这里的单例问题。您可以为类似的东西提供一个appScoped bean。因为每个人都使用相同的appScope,所以应该只有一个bean对象的实例。我希望能够在整个应用程序中获取这些值,并且只加载一次。我认为使用应用程序范围的托管bean可以工作吗?会吗?如果CacheBean中没有特定于用户的数据,那么给它一个ApplicationScope,当有特定于用户的数据时,它应该是SessionScope。运行时将处理bean的实例化。EL中的调用将是CacheBean.models