代码之家  ›  专栏  ›  技术社区  ›  Fabio

在JAR中打包Facelets文件(模板、includes、composites)

  •  19
  • Fabio  · 技术社区  · 14 年前

    有没有可能把JSF2Facelets文件和公共内容放进一个JAR中,以便从内部的其他web应用程序使用它。 <ui:composition template> , <ui:include src> , <cc:implementation>

    3 回复  |  直到 10 年前
        1
  •  32
  •   BalusC    7 年前

    你可以把公共资源放在 /META-INF/resources 将被视为 /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/资源 How to create a modular JSF 2.0 application? 举个具体的例子。

        2
  •  4
  •   Tires    12 年前

    是的,你可以延长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文件夹。

    在你的网站.xml添加:

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

    通过“http://<domain>/<web root>/<jsf servlet>/resource/<访问它;文件.xhtml>“(例如。 http://localhost/faces/resource/test.xhtml )它将被渲染。

        3
  •  1
  •   Community kfsone    7 年前

    先看这里关于 difference between war and jar

    你必须创建EAR文件并将战争打包在一起。

        4
  •  0
  •   Jasper de Vries nndru    3 年前

    请注意,如果使用Maven创建JAR,则应使用以下文件夹将资源放入:

    src/main/resources/META-INF/resources/