Возможно ли разместить файлы JSF2 Facelets с общим контентом в JAR, чтобы использовать его из других веб-приложений внутри, например. <ui:composition template>
, <ui:include src>
, <cc:implementation>
, и т.д.? Если да, как я могу это достичь? Требуется ли дополнительная настройка?Упаковка Файлы Facelets (шаблоны, включая, композиты) в JAR
ответ
Вы можете поместить общие ресурсы в папку /META-INF/resources
JAR, которая должна обрабатываться как /WEB-INF/resources
папка WAR.
E.g.
CommonWebProject
|-- META-INF
| |-- resources
| | `-- common
| | |-- css
| | | `-- some.css
| | |-- js
| | | `-- some.js
| | |-- images
| | | `-- some.png
| | |-- components
| | | `-- somecomposite.xhtml
| | |-- someinclude.xhtml
| | `-- sometemplate.xhtml
| |-- faces-config.xml
| `-- MANIFEST.MF
:
Ресурсы ЕАО будет доступен в следующем:
<... xmlns:common="http://xmlns.jcp.org/jsf/composite/common/components">
<h:outputStylesheet library="common" name="css/some.css" />
<h:outputScript library="common" name="js/some.js" />
<h:graphicImage library="common" name="images/some.png" />
<common:somecomposite />
<ui:include src="/common/someinclude.xhtml" />
<ui:composition template="/common/sometemplate.xhtml" />
...
Если вы хотите, чтобы вызвать аннотации сканера JSF2, а так, что вы можете поставить @ManagedBean
, @FacesValidator
, @FacesConverter
и супруг в том, что проект, а также, а затем создать JSF2 совместимый /META-INF/faces-config.xml
файл:
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
</faces-config>
Facelets ресурс resolver необходим, только если ресурсы не находятся в /META-INF/resources
по какой-либо причине или когда вы не используете Servlet 3.0, но 2.5, или когда вы используете раннюю версию JBoss/JSF, которая имеет ошибки в разрешении ресурсов META-INF. См. Также How to create a modular JSF 2.0 application? для конкретного примера.
В этом же вопросе, пожалуйста, прочитайте здесь difference between war and jar.
Вам нужно будет создать файл EAR и собрать войны вместе.
Да, вы можете расширить com.sun.faces.facelets.impl.DefaultResourceResolver, чтобы предоставить ресурсы JSF.
Одно общее решение заключается в следующем:
В вашем pom.xml оных:
<dependency>
<groupId>com.intersult</groupId>
<artifactId>jsf-desktop</artifactId>
<version>1.1-SNAPSHOT</version>
</dependency>
<repository>
<id>intersult-repo</id>
<name>Intersult Repository</name>
<url>https://intersult.com/svn/public/maven</url>
</repository>
Или просто добавить https://intersult.com/svn/public/maven/com/intersult/jsf-desktop/1.1-SNAPSHOT/jsf-desktop-1.1-SNAPSHOT.jar к вашему/WEB-INF/Lib папки.
В вашем web.xml добавить:
<context-param>
<param-name>javax.faces.FACELETS_RESOURCE_RESOLVER</param-name>
<param-value>com.intersult.jsf_desktop.util.ClassPathResourceResolver</param-value>
</context-param>
В любом JAR внутри WAR место XHTML-файлы в каталоге/META-INF/ресурсы/<file.xhtml>
к нему доступ через «HTTP : // домен < >/< веб-корень >/< JSF-сервлет >/ресурс/<file.xhtml> "(например, http://localhost/faces/resource/test.xhtml.) и воздастся.
- 1. Включая другие файлы в .jar
- 2. Включая файлы HTML локально/шаблоны?
- 3. Упаковка файла jar в существующий файл jar
- 4. Включая файлы jar в проект библиотеки
- 5. включая исходные файлы в файле runnable jar
- 6. Включая файлы .jar в путь к классам
- 7. Повторная упаковка файла .jar
- 8. Включая HTML-файлы калитки в файл jar со сборкой SBT
- 9. Упаковка jar для Android
- 10. T4 условно, включая шаблоны
- 11. Включая внешние шаблоны руля?
- 12. Упаковка каталога классов в файл Jar
- 13. Комбинируйте mutliple graphics2d композиты?
- 14. Упаковка файла JAR в файле WAR
- 15. Упаковка как jar для pyspark
- 16. Включая внешние файлы jar в путь ресурса в оболочке Rhino
- 17. включая другие шаблоны
- 18. Путь к классу, включая JAR в JAR
- 19. Включая файлы jar в потоке Hadoop с использованием Groovy
- 20. Включая скрытые файлы в файл войны с помощью команды jar
- 21. Включая файлы .properties с .class в JAR после установки mvn
- 22. Включая файлы активов в макет
- 23. Упаковка кода Android в файл jar
- 24. Упаковка Jar без сторонних опций в Maven
- 25. maven-gwt-plugin и упаковка в JAR
- 26. требуют, чтобы все шаблоны, включая файлы с подчеркиванием
- 27. Включая шаблоны Django в произвольном порядке
- 28. Включая Jar в Android-приложение
- 29. SWIG упаковка Проблемы с C++ шаблоны
- 30. # включая файлы
Этот подход не работал на JBoss 6 (Mojarra 2.0.1). Я тестировал Tomcat 7 и Glassfish 4, и оба они работали. JBoss генерирует это исключение: 'java.io.FileNotFoundException \t org.apache.naming.resources.DirContextURLConnection.getInputStream (DirContextURLConnection.java: 369) ' –
@Rafael: http://stackoverflow.com/a/6201044 – BalusC
Впечатляет! Теперь работает как шарм! Большое спасибо @BalusC. –