首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将Facelets文件(模板、包含、组合)打包到JAR中

将Facelets文件(模板、包含、组合)打包到JAR中
EN

Stack Overflow用户
提问于 2010-08-20 21:47:57
回答 4查看 16.3K关注 0票数 19

是否可以将包含通用内容的JSF2 Facelets文件放入JAR中,以便在<ui:composition template><ui:include src><cc:implementation>等其他web应用程序中使用?如果是,我如何实现这一点?是否需要一些额外的配置?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-23 20:32:29

您可以将公共资源放在JAR的/META-INF/resources文件夹中,该文件夹将被视为WAR的/WEB-INF/resources文件夹。

例如。

代码语言:javascript
复制
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的资源,如下所示:

代码语言:javascript
复制
<... 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和consorts也放入该项目中,那么请创建一个与JSF2兼容的/META-INF/faces-config.xml文件:

代码语言:javascript
复制
<?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>

只有当资源由于某种原因不在/META-INF/resources中时,或者当你使用的不是Servlet3.0而是2.5时,或者当你使用的是在META-INF资源解析中有错误的早期版本时,Facelets资源解析器才是必要的。另请参阅How to create a modular JSF 2.0 application?以获取具体示例。

票数 32
EN

Stack Overflow用户

发布于 2011-12-23 20:02:40

是的,您可以扩展com.sun.faces.facelets.impl.DefaultResourceResolver来为JSF提供资源。

一种通用解决方案如下:

在您的pom.xml中添加:

代码语言:javascript
复制
    <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中添加:

代码语言:javascript
复制
<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/下

通过"http://///resource/“(例如,http://localhost/faces/resource/test.xhtml),并将对其进行渲染。

票数 4
EN

Stack Overflow用户

发布于 2010-08-22 14:16:46

首先在这里阅读类似问题中关于difference between war and jar的内容。

您必须创建EAR文件并将wars打包在一起。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3531432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档