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?
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.
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://
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.
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