Ошибка команды Apple Mach -O Linker

Введение

Правильный способ JSF 2.x использует , и с name, ссылающимся на путь относительно папки webapp /resources. Таким образом, вам не нужно беспокоиться о контексте, как это было бы в JSF 1.x. См. Также . Как включить CSS относительно пути к контексту в JSF 1.x?

Структура папки

Отбросить файлы CSS / JS / image в /resources в папке открытого webcontent, как показано ниже (просто создайте один, если он еще не существует на уровне /WEB-INF и /META-INF).

WebContent
 |-- META-INF
 |-- WEB-INF
 |-- resources
 |    |-- css
 |    |    |-- other.css
 |    |    `-- style.css
 |    |-- js
 |    |    `-- script.js
 |    `-- images
 |         |-- background.png
 |         |-- favicon.ico
 |         `-- logo.png
 |-- page.xhtml
 :

В случае Maven это должно быть в /main/webapp/resources и, таким образом, не /main/resources (это для ресурсов Java (свойства / xml / text / config files), которые должны быть в runtime classpath, а не в webcontent). См. Также структуру Webapp Maven и JSF, где именно для размещения ресурсов JSF .

Ссылка в Facelets

В конечном итоге эти ресурсы доступны, как показано ниже, везде без нужно fiddle с относительными путями:


    ...
    
    


    ...
    
    ...

Атрибут name должен представлять полный путь относительно папки /resources. Его не нужно начинать с /. Вам не нужен атрибут library, если вы не разрабатываете библиотеку компонентов, такую ​​как PrimeFaces или общий JAR-файл модуля, который совместно используется несколькими webapps.

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


    
    ...

Вы можете ссылаться на также в любом месте, но по умолчанию это будет в HTML точно там, где вы его объявили. Если вы хотите, чтобы он оказался в через , добавьте атрибут target="head".


    
    ...

Или, если вы хотите, чтобы оно закончилось в конце (прямо перед , так что, например, window.onload и $(document).ready() и т. д. не требуется) через , затем добавьте атрибут target="body".


    
    ...

PrimeFaces HeadRenderer

Если вы используете PrimeFaces, его HeadRenderer испортит значение по умолчанию ], как описано выше. Вы в основном вынуждены форсировать заказ с помощью функции PrimeFaces , которая может закончиться беспорядочным и «неуправляемым» кодом. Вы можете отключить его, как описано в этом ответе .

Упаковка в JAR

Вы даже можете упаковать ресурсы в JAR-файле. См. Также Структура для нескольких проектов JSF с общим кодом .

Ссылка в EL

Вы можете в EL использовать отображение #{resource}, чтобы позволить JSF в основном распечатывать URL ресурса, например /context/javax.faces.resource/folder/file.ext.xhtml?ln=library, чтобы вы могли использовать его, например, CSS-фоновое изображение или значок. Единственным требованием является то, что сам файл CSS также должен служить ресурсом JSF, иначе EL-выражения не будут оцениваться. См. Также Как ссылаться на ресурс изображений JSF в качестве URL-адреса фонового изображения CSS .

.some {
    background-image: url("#{resource['images/background.png']}");
}

Вот пример @import.

@import url("#{resource['css/other.css']}");

Вот пример favicon. См. Также Добавить favicon в проект JSF и указать его в & lt; link & gt; .


Ссылка на сторонние файлы CSS

Файлы сторонних CSS загруженный через , который, в свою очередь, может потребоваться изменить ссылочные шрифты и / или изображения, чтобы использовать выражения #{resource}, как описано в предыдущем разделе, в противном случае необходимо установить UnmappedResourceHandler, чтобы иметь возможность обслуживать тех, кто использует JSF , См. Также a.o. Страница Bootsfaces отображается в браузере без какого-либо стиля и Как использовать файл Font Awesome 4.x CSS с JSF? Браузер не может найти файлы шрифтов .

Скрытие in / WEB-INF

Если вы намерены скрыть ресурсы из открытого доступа, перемещая всю папку /resources в /WEB-INF, то вы можете с тех пор, как JSF 2.2 необязательно изменит путь, связанный с webcontent, с помощью нового контекстного параметра web.xml следующим образом:


    javax.faces.WEBAPP_RESOURCES_DIRECTORY
    /WEB-INF/resources

В более старых версиях JSF это невозможно.

См. также:

29
задан rmaddy 5 November 2015 в 03:16
поделиться