是否有可能将带有公共内容的JSF2 Facelets文件放入JAR中,以便将其从其他Web应用程序中使用,例如: <ui:composition template>
,<ui:include src>
,<cc:implementation>
等?如果是的话,我怎么能做到这一点?是否需要一些额外的配置?在JAR中打包Facelets文件(模板,包含,合成)
回答
您可以将常见资源放在JAR的/META-INF/resources
文件夹中,该文件夹将被视为WAR文件夹中的/WEB-INF/resources
文件夹。
E.g.
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,或者您使用的早期JBoss/JSF版本存在META-INF资源解析错误,则只需要解析器。有关具体示例,另请参阅How to create a modular JSF 2.0 application?。
首先阅读有关difference between war and jar的相似问题。
您将不得不创建EAR文件并将战争打包在一起。
是的,您可以扩展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文件夹。
在你的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>
在战争中发生的XHTML文件内的任何JAR下/ META-INF /资源/ <file.xhtml>
通过“访问它的HTTP :// <域>/< web的根>/< JSF-的servlet > /资源/ <file.xhtml>“(例如http://localhost/faces/resource/test.xhtml。),它会被渲染。
- 1. ui:包含未包含在Facelets模板中
- 2. eclipse:在jar包中包含abitrary文件
- 3. 如何在使用JSF和Facelets的模板中有条件地包含文件?
- 4. 在Wordpress模板中包含PHP文件
- 5. 在Jinja2模板中包含html文件
- 6. 如何将JSP文件包含在Facelets文件中?
- 7. 将android代码打包成jar文件
- 8. 模板中包含头文件。
- 9. 包含PHP文件中Joomla模板
- 10. JAR不包含根文件
- 11. C++ Builder:包含JAR文件
- 12. 在cli中包含jar文件库
- 13. 在.jar中包含其他文件
- 14. 在Java Jar文件中包含GImages
- 15. 在PHPJAVA桥中包含.jar文件
- 16. 包括包含.jar文件编译
- 17. 将已包含在.a中的.so打包成apk文件
- 18. 解包并重新打包.jar文件
- 19. 打包Java应用程序时,jar文件中不包含属性文件
- 20. 使用包含在Facelets中的问题
- 21. 将Repast模型打包为jar文件而不包含源代码?
- 22. 将jar文件打包到存在的jar文件中
- 23. 如何在部署时在独立包中包含jar文件
- 24. 多次包含文件(用于模板)
- 25. 包含文件/模板每个用户
- 26. 包含带有模板的javascript文件
- 27. 在Eclipse模块中包含jar和Eclipse
- 28. 在appclient jar中包含模型库
- 29. 编辑JAR文件中包含的值
- 30. 在.apk上包含jar文件
这种方法还没有在JBoss 6(Mojarra 2.0.1)上工作。我已经测试了Tomcat 7和Glassfish 4,并且都在工作。 JBoss抛出这个异常:'java.io.FileNotFoundException \t org.apache.naming.resources.DirContextURLConnection.getInputStream(DirContextURLConnection。java:369)' – 2013-07-19 16:49:47
@Rafael:http://stackoverflow.com/a/6201044 – BalusC 2013-07-19 16:53:16
令人印象深刻!现在就像一个魅力!非常感谢你@BalusC。 – 2013-07-19 17:24:48