19

共通のコンテンツを含むJSF2FaceletsファイルをJARに入れて、、、などの内部の他のWebアプリケーションから使用することは可能です<ui:composition template>か?はいの場合、どうすればこれを達成できますか?追加の構成が必要ですか?<ui:include src><cc:implementation>

4

4 に答える 4

32

共通リソースは、WAR のフォルダと/META-INF/resources同じように扱う JAR のフォルダに配置できます。/WEB-INF/resources

例えば

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
 :

JAR のリソースは、次のように利用できます。

<... 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 リソース リゾルバーが必要になるのは、リソースが/META-INF/resources何らかの理由で含まれていない場合、または Servlet 3.0 ではなく 2.5 を使用している場合、または META-INF リソース解決にバグがある初期の JBoss/JSF バージョンを使用している場合のみです。 . モジュラー JSF 2.0 アプリケーションを作成する方法も参照してください。具体例として。

于 2011-12-23T12:32:29.267 に答える
4

はい、com.sun.faces.facelets.impl.DefaultResourceResolverを拡張して、JSFにリソースを提供できます。

一般的な解決策の1つは次のとおりです。

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>

WAR内の任意のJARで、XHTML-Filesを/ META-INF / resources/<file.xhtml>の下に配置します。

「http:// <domain> / <web-root> / <jsf-servlet> /resource/<file.xhtml>」(例:http://localhost/faces/resource/test.xhtml)からアクセスし、レンダリングされます。

于 2011-12-23T12:02:39.783 に答える
1

最初に、同様の質問で戦争と瓶の違いについてここを読んでください。

EAR ファイルを作成し、wars を一緒にパックする必要があります。

于 2010-08-22T06:16:45.753 に答える