2017-01-26 9 views
0

Я работаю со многими страницами 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" /> 

Вопрос заключается в: резюме есть собственная поддержка боб и логика, и каждый раз, он включен, логика повторно выполняется и создается новый блок html. Мне было интересно, есть ли тег, который использует копию сгенерированного компонента, не вовлекая компонент во второй раз. Я открыт для любого предложения, которое не изменило бы включенный контент.

+0

Зачем вам это нужно? В чем проблема с тем, как это работает сейчас? – Kukeltje

+0

@ Kukeltje для каждой вставки, бэк-файл для сводной информации пересчитывает отображаемую информацию (например, среднюю затрату и т. Д.). Это не так много времени обработки, но оно заметно и ненужно. –

+0

Тогда почему бы не «кеш» вычислить значение? Или попробуйте [omnifaces cache] (http://showcase.omnifaces.org/components/cache) – Kukeltje

ответ

1

Omnifaces cache наиболее подходит, если вы не используете PrimeFaces.

Из Omnifaces витрина:

<o:cache> компонент позволяет кэшировать фрагмент разметки оказанной. Первый запрос страницы, на которой есть этот компонент, вызовет эту разметку, которая будет помещена в кеш. Тогда для последующих запросов, которые кэшированное содержимое не используется непосредственно, и ни один из компонентов, отступая бобы и услуги, которые были использованы для создания этого контента в первую очередь будут проводиться консультации

Если вы используете PrimeFaces, PrimeFaces cache также является для вас вариантом.

С сайта PrimeFaces: Компонент Cache

Cache используется для уменьшения времени загрузки страниц за счет кэширования контента в глобальном кэше после начального рендеринга. Различные кеш-серверы поддерживаются как ehcache и hazelcast. В этом примере компонент панели инструментов кэшируется, и вывод будет получен из кеша.

Есть некоторые различия между ними. Прочитайте их полную документацию, чтобы узнать, какая из них наиболее подходит

+0

Я действительно удивлен, что JSF не включает в себя какой-либо кеш из коробки, PrimeFace с очень короткими историями кеша лучше всего подходит для того, с чем я работаю. Спасибо. –

+0

Хм ... в этом отношении кеш PrimeFaces и Omnifaces не имеет особого значения. Поэтому я не понимаю, что вы на самом деле имеете в виду. – Kukeltje