Java Xpages:如何确保我的cacheBean只加载一次
仍然在努力正确地制作cacheBean。根据我所读到的,我想我希望这个bean是一个单身汉。只需要 一个例子。使用它来获取常用的关键字等 我使用这个模式来制作CacheBean,并使用了一个实用方法 如果通过将其放入Faces配置中使其成为managedBean,那么我可以轻松获得模型的值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>
<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