Однако, если мне нужно истечь тайник, там, кажется, не будет никакого способа сделать это.
На ярлыке/компоненте нет метода, но есть программный путь. Это работает лучше всего, если вы назначаете явный ключ к вашей записи кэша:
<o:cache key="myCache">
cached content here
</o:cache>
Затем в бэк-боба можно удалить содержимое для этой записи следующим образом:
public void reset() {
CacheFactory.getCache(Faces.getContext(), "session").remove("myCache");
}
Обратите внимание, что область действия по умолчанию является " сеанс ", поэтому он используется здесь. Если вы использовали другую область для тега (например, «приложение»), вы должны указать это в своем базовом компоненте.
Вы можете вызвать этот метод всякий раз, когда вы знаете, что кэш должен быть истек (например, если метод действия обновлены некоторые данные аккомпанемента), или вы можете сделать явную кнопку сброса:
<h:form>
<h:commandButton action="#{someBean.reset}" value="Reset cache" />
</h:form>
Для OmniFaces 1.5 мы планировали добавить атрибут к тегу o:cache
, чтобы сделать его более простым, и мы добавим пример в нашу витрину, показывающую, как истекать записи вручную.
Спасибо, Арьян! Это идеальное решение. – TemarV
@TemarV приветствую :) –