2014-01-21 2 views
1

Я слежу за отличным ответом BalusC here, который проходит шаги по упаковыванию содержимого JSF в банку, чтобы он мог использоваться несколькими приложениями. Сюда входит указание общих файлов css. Я хотел бы поместить в jar мои прайсы theme.css, однако в том, как включить тему, они являются весьма предписывающими. то есть. она должна быть в папке, как (resources/primefaces-mytheme/theme.css), то web.xml должен включать в себя:Как я могу поместить тему «Приправы» в повторно используемую банку?

<context-param> 
    <param-name>primefaces.THEME</param-name> 
    <param-value>mytheme</param-value> 
</context-param> 

Если я кладу мою тему в банку, как так (например) ...

CommonWebProject 
|-- META-INF 
| |-- resources 
| | -- common 
| |   |-- css 
| |   | -- theme.css 

.. .Каким образом должен выглядеть параметр контекста в проекте, который использует банку? (или, может быть, должен быть файл web.xml в самой банке?)

Редактировать: Альтернативным решением было бы как-то остановить помехи от вставки его темы по умолчанию. Тогда я мог бы просто вставить свою собственную тему обычным способом в заголовок моего шаблона.

+0

Это тема создана вами? Тема раздела шрифтов была создана с помощью [JQueryUI ThemeRoller] (http://jqueryui.com/themeroller/). Или вы просто переопределяете стили CSS по умолчанию для компонентов PF? –

+0

Привет @XtremeBiker, он был создан с ThemeRoller, но со временем изменился. Я пробовал исключить контекст-параметр и вставлять тему обычно в заголовок шаблона, но css из темы текстур по умолчанию тогда фактически помешает моему собственному –

+0

, если бы я мог остановить первичность, автоматически добавляя тему по умолчанию, которая также решить мою проблему –

ответ

0

Таким образом, в соответствии с комментарием Xtreme Байкер, вы можете отключить тему по умолчанию primefaces с:

<context-param> 
    <param-name>primefaces.THEME</param-name> 
    <param-value>none</param-value> 
</context-param> 

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

<h:outputStylesheet library="primefaces-mytheme" name="theme.css" /> 

Я использую стандартный шаблон facelets для всех страниц моего приложения, поэтому этот css-файл добавляется на каждую страницу с помощью этой отдельной строки.

Если порядок CSS файлов важен (как для меня) вы также можете использовать что-то вроде ...

<f:facet name="last"> 
    <link type="text/css" rel="stylesheet" 
      href="#{request.contextPath}/javax.faces.resources/primefaces-mytheme/teccura.css.xhtml"/> 
</f:facet> 

... в заголовке, чтобы диктовать, что ссылка должна быть вставлена ​​" «первый», «средний» или «последний». (Я использую «last», чтобы убедиться, что мой css переопределяет primefaces.css).

Может быть более аккуратным, чтобы каким-либо образом определить точки в CSS, используя параметр context-param (и если кто-то знает, как это сделать, сообщите мне об этом), однако этот подход дает больше контроля. Поэтому я могу, например, теперь называть свои папки и файлы тем, что мне нравится, т.е. common/css/mytheme.css, а не primefaces-mytheme/theme.css

+0

Вместо этого '' in '', вы также можете просто поместить '' в начало ''. См. Также http: // stackoverflow.com/questions/8768317/how-do-i-override-the-classes-defined-in-primefaces-css/8774997 # 8774997 – BalusC

+0

ok, еще раз спасибо @BalusC. Вы бы сказали, что это лучшая практика или просто действительная альтернатива? –

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