是否有可能將帶有公共內容的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. eclipse:在jar包中包含abitrary文件
- 2. 模板中包含頭文件。
- 3. JAR不包含根文件
- 4. C++ Builder:包含JAR文件
- 5. 在Java Jar文件中包含GImages
- 6. 包括包含.jar文件編譯
- 7. 將已包含在.a中的.so打包成apk文件
- 8. 打包Java應用程序時,jar文件中不包含屬性文件
- 9. 將Repast模型打包爲jar文件而不包含源代碼?
- 10. 使用包含在Facelets中的問題
- 11. 包含帶有模板的javascript文件
- 12. 在.apk上包含jar文件
- 13. PHP:包含無合成器的文件
- 14. 爲什麼maven不在我的jar包中包含JSP文件?
- 15. 使用清單文件打包jar文件中的包
- 16. 包含在樹枝模板
- 17. WHMCS中包含Drupal模板?
- 18. Java包Jar包含文本文件和文件夾
- 19. 在Project Jar中包含log4j.xml
- 20. 有條件地在ui中包含模板文件:composition標籤
- 21. 在NetBeans中將jar文件包含在另一個jar文件中
- 22. 訪問打包成jar文件的文件
- 23. Maven會自動將jar文件打包成war文件嗎?
- 24. 在JAR中包含JAR的類路徑
- 25. 如何在Django中的所有模板中包含文件
- 26. 如何將html或模板文件包含到.html文件中?
- 27. 包含來自Flask模板中靜態文件夾的文件
- 28. 在宏中生成包含文件名
- 29. IntelliJ:包含.jar的屬性文件無法通過包含的.jar找到
- 30. 如何在分佈式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