如何插入元素的精确副本而不重新生成它

时间:2017-01-26 15:38:20

标签: jsf jsf-2.2

我正在处理许多JSF页面,其中包含有关站点主题的摘要。在大页面上,摘要在不同位置重复。它是通过定义元素然后插入它来完成的:

<ui:define name="sommaire">
 <ui:include src="/sommaire/sommaire.xhtml">
  <ui:param name="contrat" value="#{form.contrat}" />
 </ui:include>
</ui:define>

以后在几个不同的地方:

<ui:insert name="sommaireContrat" />

问题是:摘要具有自己的支持bean和逻辑,每次包含它时,都会重新执行逻辑并呈现新的html块。我想知道是否有一个标签使用了生成的组件的副本而没有第二次涉及bean。 我愿意接受任何不会修改所包含内容的建议。

1 个答案:

答案 0 :(得分:1)

如果您不使用PrimeFaces,

Omnifaces cache最适合。

来自Omnifaces展示:

  

<o:cache>组件允许缓存渲染标记的片段。   对包含此组件的页面的第一个请求将导致   这个标记要放入缓存中。然后为后续请求   缓存内容直接使用,没有任何组件,支持   用于在中生成此内容的bean和服务   第一名将被咨询

如果您使用的是PrimeFaces,PrimeFaces cache也是您的选择。

来自PrimeFaces网站:

  

缓存缓存组件用于通过缓存来减少页面加载时间   初始渲染后的全局缓存中的内容。各种缓存   像ehcache和hazelcast一样支持提供者。在这个例子中,   工具栏组件被缓存,输出将从缓存中检索。

它们之间存在一些差异。阅读他们的完整文档,看看哪个最适合