Có thể đặt các tệp Facelets JSF2 có nội dung chung vào một JAR để sử dụng nó từ các ứng dụng web khác bên trong ví dụ: <ui:composition template>
, <ui:include src>
, <cc:implementation>
, v.v ...? Nếu có, làm thế nào tôi có thể đạt được điều này? Một số cấu hình bổ sung có cần thiết không?Các tệp khuôn mặt bao bì (mẫu, bao gồm, vật liệu tổng hợp) trong một JAR
Trả lời
Bạn có thể đặt các tài nguyên phổ biến trong thư mục /META-INF/resources
của JAR được xử lý giống như thư mục /WEB-INF/resources
của WAR.
Ví dụ:
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
:
Các nguồn lực của JAR là sau đó có sẵn như sau:
<... 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" />
...
Nếu bạn muốn kích hoạt các máy quét chú thích JSF2 cũng vì vậy mà bạn có thể đặt @ManagedBean
, @FacesValidator
, @FacesConverter
và các phu nhân ở chỗ dự án là tốt, sau đó tạo một JSF2 tương thích /META-INF/faces-config.xml
tệp:
<?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>
Tài nguyên Facelets Trình phân giải chỉ cần thiết nếu tài nguyên không ở trong /META-INF/resources
vì một số lý do hoặc khi bạn không sử dụng Servlet 3.0 nhưng 2.5 hoặc khi bạn đang sử dụng phiên bản JBoss/JSF sớm có lỗi trong giải quyết tài nguyên META-INF. Xem thêm How to create a modular JSF 2.0 application? để biết ví dụ cụ thể.
Đầu tiên đọc ở đây về số difference between war and jar trong một câu hỏi tương tự.
Bạn sẽ phải tạo tệp EAR và đóng gói các cuộc chiến tranh với nhau.
Có, bạn có thể mở rộng com.sun.faces.facelets.impl.DefaultResourceResolver để cung cấp tài nguyên cho JSF.
Một giải pháp chung như sau:
Trong pom.xml add bạn:
<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>
Hoặc chỉ cần thêm https://intersult.com/svn/public/maven/com/intersult/jsf-desktop/1.1-SNAPSHOT/jsf-desktop-1.1-SNAPSHOT.jar để WEB-INF thư mục của bạn// lib.
Trong web.xml add bạn:
<context-param>
<param-name>javax.faces.FACELETS_RESOURCE_RESOLVER</param-name>
<param-value>com.intersult.jsf_desktop.util.ClassPathResourceResolver</param-value>
</context-param>
Trong bất kỳ JAR bên trong nơi WAR XHTML-Files dưới/META-INF/nguồn/<file.xhtml>
truy cập nó thông qua "http : // < miền >/< web gốc >/< jsf-servlet >/tài nguyên/<file.xhtml> "(ví dụ http://localhost/faces/resource/test.xhtml.) và nó sẽ được trả lại.
- 1. JSF facelets mẫu bao bì
- 2. Bao gồm các thư viện trong jar
- 3. Bao bì các tệp Javascript trong một cuộc chiến tranh?
- 4. Bao gồm các tệp PHP với khuôn khổ Laravel
- 5. Maven Xây dựng không bao gồm tệp .class trong jar
- 6. Java Jar Ant bao gồm thư mục
- 7. Làm thế nào để tạo một tệp JAR bao gồm các tệp DLL?
- 8. Bao gồm docstring trong Tài liệu Sphinx
- 9. Bao gồm các tệp R?
- 10. Ant bao gồm bên ngoài .jar
- 11. Cách bao gồm khuôn khổ SDWebImage
- 12. Bao bì Python
- 13. Bao gồm tệp .cpp?
- 14. Bao gồm tệp .js trong tệp .js
- 15. Làm cách nào để bao gồm các JAR bên ngoài trong Project JAR của riêng tôi
- 16. Bao bì/Triển khai PHP
- 17. Bao gồm các file JS trong một file xhtml được bao gồm sử dụng ui: bao gồm
- 18. Maven: Bao gồm các tài nguyên vào JAR
- 19. Bỏ qua một tệp khi hợp nhất - nhưng bao gồm tệp đó trong các lần đẩy
- 20. Bao gồm tệp lô trong tệp lô
- 21. Bao gồm các tệp JAR trong dự án Eclipse (App Engine)
- 22. Mẫu Django - lồng nhau bao gồm trong các vòng
- 23. Cách bao gồm các tệp jar trong dự án thư viện android
- 24. cách tạo tệp tai và bao gồm tệp chiến tranh và tệp jar bên trong đó
- 25. Tính năng bao gồm các tệp JSP vào mùa xuân và động bao gồm
- 26. Codeigniter: Cách bao gồm các tệp javascript
- 27. Làm thế nào để bao gồm cấu trúc thư mục trong một tệp jar kiến?
- 28. Bao gồm một tệp JSP khác
- 29. subversion diff bao gồm các tệp mới
- 30. Cách ký tự đại diện bao gồm các tệp JAR khi biên dịch?
Cách tiếp cận này đã không hoạt động trên JBoss 6 (Mojarra 2.0.1). Tôi đã thử nghiệm trên Tomcat 7 và Glassfish 4, và cả hai đều làm việc. JBoss ném ngoại lệ này: 'java.io.FileNotFoundException \t org.apache.naming.resources.DirContextURLConnection.getInputStream (DirContextURLConnection.java: 369) ' –
@Rafael: http://stackoverflow.com/a/6201044 – BalusC
Ấn tượng! Bây giờ làm việc như một say mê! Cảm ơn bạn rất nhiều @BalusC. –