2015-08-13 1 views
3

С Mojarra/JSF 2.2. это не возможно больше, чтобы обеспечить пользовательский FaceletFactory с использованием параметра web.xml контекста:Пользовательский FaceletFactory в JSF 2.2/Альтернативы для виртуальных хост-фишек

<context-param> 
     <param-name>com.sun.faces.faceletFactory</param-name> 
     <param-value>my.faces.overrides.MyFaceletFactory</param-value> 
</context-param> 

Мое приложение предоставляет некоторые возможности CMS, в том числе поддержка виртуального хоста для обслуживания различных страниц (Facelets) на основе текущей запрошенной домена. Таким образом, http://www.domain1.com/index.xhtml возвращает другой контент, чем http://www.otherdomain.com/index.xhtml. Механика, стоящая за этим, не так важна, используя специальный редактор ресурсов. Реальная проблема при этом заключается в том, что jsf кэширует фишки только на основе запрошенного uri, который не содержит имя хоста ("/index.xhtml" в обоих случаях). Я работал над этой проблемой, просто добавив в нее имя хоста в моем обычном FaceletFactory: uri = "/" + getCleanHostName() + "://" + uri;. С JSF 2.2 это уже не кажется возможным. Есть ли другой способ архивировать правильное поведение кеширования в JSF 2.2? Отключение кеша лиц не является вариантом из-за его влияния на производительность.

ответ

3

Планировалось стандартизировать его в спецификации JSF по issue 611. Однако это было отменено позже, потому что были утечки абстракции. Смотрите также What's new in JSF 2.2? Но первоначальное состояние не откатывается больше, несмотря на просьбу Эда в выпуске 611, как приведены ниже:

Но когда я снял стандартизированный FaceletFactory, в r11053, я не пута назад параметр контекста. Будете ли вы удовлетворены, если я просто верну его, и это сработало, как в 2.1?

Возможно, вы захотите создать новую проблему, чтобы разбудить это.

Альтернативой заменить его его обычай ResourceHandler (не ResourceResolver, так как это deprecated в JSF 2.2), наряду с обычаем FaceletCacheFactory (стандартизован так JSF 2.1), которое может быть зарегистрировано с помощью <factory><facelet-cache-factory> в faces-config.xml.

+0

Пользовательская фабрика кечей - отличная новость. Благодаря! – Roben

+0

Добро пожаловать :) – BalusC

+0

Я просто перешел на JSF 2.2 вместе с указанными изменениями, которые прошли довольно хорошо. Пользовательский 'FaceletCacheFactory' не требовался, хотя URL-адрес, созданный' ResourceHandler' (наряду с моим измененным хостом), также используется в качестве ключа кэша mojarra. – Roben

Смежные вопросы