2012-04-01 29 views
8

Tôi đã chơi với JSF và có một dự án làm việc có một đầu trang/chân trang/điều hướng/nội dung bảng. Tuy nhiên, dự án đi từ trang 1 đến trang 2, v.v., với mỗi trang có bố cục khác nhau. Làm cách nào để tạo mẫu có thể sử dụng lại giữ cùng giao diện từ trang này sang trang khác, tức là đầu trang/chân trang/điều hướng vẫn giữ nguyên, nhưng nội dung được cập nhật?Làm cách nào để tạo mẫu có thể dùng lại với đầu trang/chân trang/điều hướng?

Trả lời

22

Điều này nghe giống như trường hợp cổ điển của mẫu chính. Trong một mẫu như vậy bạn đặt tất cả mọi thứ phổ biến cho tất cả các trang và sau đó các trang thực sự của bạn tham khảo mẫu này và "điền vào chỗ trống". Trong một cách nó là sự đảo ngược của bao gồm cả cổ điển.

Ví dụ:

/WEB-INF/templates/masterTemplate.xhtml:

<!DOCTYPE html> 
<html lang="en" 
    xmlns="http://www.w3.org/1999/xhtml" 
    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:head> 
     <title> 
      <ui:insert name="title">Some title</ui:insert> 
     </title>   
    </h:head> 

    <ui:include src="header.xhtml"/> 

    <h:body> 
     <ui:insert name="content" /> 
    </h:body> 

    <ui:include src="footer.xhtml"/> 

</html> 

Một trang sử dụng này như sau, ví dụ

/hello.xhtml

<ui:composition template="/WEB-INF/templates/masterTemplate.xhtml" 
    xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
> 
    <ui:define name="title">hello</ui:define> 

    <ui:define name="content"> 
     Hi, this is the page 
    </ui:define> 
</ui:composition> 
+2

ngắn và ngọt ngào .. !!! – kark

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