Pakowanie plików (szablonów, zawiera, kompozytów) w słoiku

Czy można umieścić pliki Jsf2 z zawartością wspólną w słoiku, aby wykorzystać je z innych aplikacji webowych wewnątrz np. <ui:composition template>, <ui:include src>, <cc:implementation>, itd? Jeśli tak, jak Mogę to osiągnąć? Czy potrzebna jest dodatkowa konfiguracja?

Author: BalusC, 2010-08-20

3 answers

Możesz umieścić wspólne zasoby w folderze /META-INF/resources słoika, który ma być traktowany jak /WEB-INF/resources folder wojny.

Np.

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
 :

Zasoby słoika są następnie dostępne w następujący sposób:

<... 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" />
...

Jeśli chcesz uruchomić skaner adnotacji JSF2, aby można było umieścić @ManagedBean, @FacesValidator, @FacesConverter a także w tym projekcie, następnie utwórz plik zgodny z 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 resource resolver jest niezbędny tylko wtedy, gdy zasoby nie są w /META-INF/resources z jakiegoś powodu, lub gdy nie używasz Servlet 3.0, ale 2.5, lub gdy używasz wczesnej wersji JBoss/JSF, która ma błędy w rozwiązywaniu zasobów META-INF. Zobacz także Jak stworzyć modułową aplikację JSF 2.0? na konkretny przykład.

 31
Author: BalusC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-31 07:41:23

Tak, możesz rozszerzyć com.słońce.twarze.facelets.impl.DefaultResourceResolver zapewnia zasoby do JSF.

Jedno ogólne rozwiązanie jest następujące:

W Twoim pom.XML add:
    <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>

Lub po prostu dodać https://intersult.com/svn/public/maven/com/intersult/jsf-desktop/1.1-SNAPSHOT/jsf-desktop-1.1-SNAPSHOT.jar do folderu / WEB-INF / lib.

W sieci.XML add:

<context-param>
    <param-name>javax.faces.FACELETS_RESOURCE_RESOLVER</param-name>
    <param-value>com.intersult.jsf_desktop.util.ClassPathResourceResolver</param-value>
</context-param>

W dowolnym słoiku w WAR umieść pliki XHTML pod / META-INF / resources/

Dostęp do niego poprzez "http://///resource/ "(np. http://localhost/faces/resource/test.xhtml ) i będzie renderowany.

 4
Author: Tires,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-30 00:50:13

Najpierw przeczytaj tutaj o różnicy między war a jar w podobnym pytaniu.

Będziesz musiał utworzyć plik EAR i spakować wojny razem.

 1
Author: Dejell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:09:38