Trong Facelets 1.x bạn có thể tạo tệp thẻ cho mục đích này.
Dưới đây là ví dụ về khởi đầu cơ bản. Tạo /WEB-INF/tags/some.xhtml
:
<ui:composition
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
>
<h:outputText value="#{foo}" />
</ui:composition>
Xác định nó trong /WEB-INF/my.taglib.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE facelet-taglib PUBLIC
"-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
"http://java.sun.com/dtd/facelet-taglib_1_0.dtd">
<facelet-taglib>
<namespace>http://example.com/jsf/facelets</namespace>
<tag>
<tag-name>some</tag-name>
<source>/WEB-INF/tags/some.xhtml</source>
</tag>
</facelet-taglib>
đăng ký nó trong /WEB-INF/web.xml
:
<context-param>
<param-name>facelets.LIBRARIES</param-name>
<param-value>/WEB-INF/my.taglib.xml</param-value>
</context-param>
(lưu ý, khi bạn có nhiều, sử dụng dấu chấm phẩy ;
để tách chúng)
Cuối cùng chỉ cần khai báo nó trong các mẫu trang chính của bạn.
<ui:composition
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:my="http://example.com/jsf/facelets"
>
<my:some foo="value1" />
<my:some foo="value2" />
<my:some foo="value3" />
</ui:composition>
Một ví dụ cao cấp hơn có thể được tìm thấy ở đây: How to make a grid of JSF composite component? Lưu ý: JSF 2.0 nhắm mục tiêu, nhưng với những thay đổi nhỏ dựa trên ví dụ trên nó hoạt động tốt trên Facelets 1.x.
Bạn có đang sử dụng JSF 2.0 không? –
Xin lỗi, tôi quên thêm phần này vào phần tóm tắt. Tôi sử dụng 1,2 – Daggeto