我有一个大的应用程序作用域内容缓冲区,我想保留在内存中.使用Omnifaces让我们很容易做到这一点.
但是,如果我需要使缓存过期,似乎没有方法可以这样做.如果需要,我可以设置时间属性,但这似乎并不是这个难题的理想答案.
有关强制更新基础数据的任何建议吗?
谢谢,
Temar
但是,如果我需要使缓存过期,似乎没有方法可以这样做.
在标签/组件上确实没有方法,但有一种编程方式.如果为缓存条目指定显式键,则此方法效果最佳:
<o:cache key="myCache">
cached content here
</o:cache>
Run Code Online (Sandbox Code Playgroud)
然后在支持bean中,您可以删除该条目的内容,如下所示:
public void reset() {
CacheFactory.getCache(Faces.getContext(), "session").remove("myCache");
}
Run Code Online (Sandbox Code Playgroud)
请注意,默认范围是"会话",因此在此处使用.如果您为标记使用了另一个范围(例如"application"),则应在支持bean代码中指定该范围.
只要知道缓存需要过期(例如,如果操作方法更新了某些后备数据),您就可以调用此方法,或者您可以创建一个显式的重置按钮:
<h:form>
<h:commandButton action="#{someBean.reset}" value="Reset cache" />
</h:form>
Run Code Online (Sandbox Code Playgroud)
对于OmniFaces 1.5,我们计划在o:cache
标签中添加一个属性,使其更简单一些,我们将在我们的展示中添加一个示例,说明如何手动使条目过期.
归档时间: |
|
查看次数: |
217 次 |
最近记录: |