通过属性有条件地启用或禁用o:cache?

时间:2013-09-04 06:10:48

标签: jsf caching omnifaces

我无法找到有条件启用或禁用o:cache的任何属性。有没有其他方法可以实现这一目标?

这样的事情:

<o:cache scope="application" disabled="#{someELexprsn}">
    ....
</o:cache>

我想基于某些条件禁用o:cache。

(实际上我在用于显示多种类型实体的页面的页面上使用此o:cache,但我想仅为某些实体的页面启用缓存。)

1 个答案:

答案 0 :(得分:2)

没有任何属性可以让您根据每个请求禁用缓存。随意打开feature request以便将其添加到OmniFaces。

同时,您可以滥用reset属性。

<o:cache scope="application" reset="#{someELexprsn}">
    ....
</o:cache>

在封面下,它仍会缓存它,但每次EL表达式评估true时都会重置它。实际上,它具有与预期相同的预期效果,尽管它是以笨拙的方式完成的。在OmniFaces人员添加新属性之前,这可能就足够了。 disabled属性将代替重置执行渲染的完全传递(因此,在此特定示例中,缓存的内容仍将在应用程序范围内,但根本不会被渲染)。