2010-04-15 33 views
7

Tôi đang cố tạo một thành phần tổng hợp để sử dụng trong ứng dụng Seam của mình và tôi đang gặp sự cố với thành phần "hello, world" đơn giản nhất.Thành phần tổng hợp JSF

tôi đã đặt một file có tên hello.xhtml trong {triển khai JBoss} /application.ear/application.war/resources/greet:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:composite="http://java.sun.com/jsf/composite"> 
<head> 
<title>My First Composite Component</title> 
</head> 
<body> 

<composite:interface> 
    <composite:attribute name="who"/> 
</composite:interface> 

<composite:implementation> 
    <h:outputText value="Hello, #{cc.attrs.who}!"/> 
</composite:implementation> 

</body> 
</html> 

Bây giờ trong home.xhtml, nằm ở thư mục gốc của tôi webapp ({JBoss triển khai} /application.ear/application.war/home.xhtml):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:ui="http://java.sun.com/jsf/facelets" 
      xmlns:h="http://java.sun.com/jsf/html" 
      xmlns:f="http://java.sun.com/jsf/core" 
      xmlns:g="http://java.sun.com/jsf/composite/greet" 
      xmlns:s="http://jboss.com/products/seam/taglib" 
      template="layout/template.xhtml"> 
    <ui:define name="content"> 
    <div id="content"> 
     <g:hello who="World"/> 
     <br/> 
    </div> 
    </ui:define> 
</ui:composition> 

Nhưng tôi "hello, world" không được hiển thị, và tôi không nhận được bất kỳ thông báo lỗi, thậm chí khi tôi bật về đăng nhập mức gỡ lỗi cho các danh mục com.sun và javax.faces.

tôi đã xác minh rằng thư mục nguồn là ở nơi thích hợp, kể từ khi thêm nguồn lực thư mục/images/test.jpg, sau đó thêm này để home.xhtml:

h:graphicImage value="#{resource['images:test.jpg']}"/> 

Kết quả trong hình ảnh là hiển thị. Tôi chỉ không biết tại sao JSF không chọn tập tin xhtml của tôi từ thư mục greet.

Bất kỳ ý tưởng nào?

Trả lời

3

Thử đặt số điện thoại đó vào META-INF/resources, không chỉ resources.

+0

Cảm ơn gợi ý của bạn, nhưng tôi đã thử tất cả các địa điểm sau đây không có may mắn: 'application.ear/META-INF/resources 'application.ear/application.war/WEB-INF/resources ' application.ear/application.war/WEB-INF/classes/resources 'application.ear/application.war/META-INF/resources (hoàn toàn phi tiêu chuẩn) Tôi lo ngại rằng tôi không nhận được kết quả gỡ lỗi/thông tin cho việc này. Tôi không biết JSF/Seam đang tìm kiếm thư mục tài nguyên ở đâu. – purecharger

+0

Dùng thử application.ear/application.war/WEB-INF/classes/META-INF/tài nguyên. Tôi không có kinh nghiệm với phần application.ear, nhưng đây là ví dụ về webapp sử dụng thành phần tổng hợp: http://confluence.highsource.org/x/FoBM. Thành phần xhtml nằm trong war/WEB-INF/classes/META-INF/resources. Cũng đảm bảo rằng bạn đang sử dụng JSF 2.0 chứ không phải JSF 1.2. Và không, bạn không nhận được bất kỳ thông báo lỗi nào, các không gian tên không được xử lý được xử lý theo cách "lỏng lẻo". – lexicore

+0

Thật không may là vị trí không hoạt động hoặc. Vị trí tài nguyên JSF2 đang được xem đúng - tôi đã cập nhật bài đăng gốc để cho thấy rằng tôi có thể tham chiếu các tài nguyên như thư viện 'hình ảnh'. Nhưng thành phần tổng hợp không được nhìn thấy. – purecharger

Các vấn đề liên quan