2008-08-25 38 views
6

Tương đương với trang Master nào trong thế giới phát triển web Java? Tôi đã nghe nói về Tiles, Tapestry và Velocity nhưng không biết gì về chúng. Chúng có dễ sử dụng như trang chính không?ASP.NET Master Pages tương đương với Java

Tôi muốn điều gì đó dễ dàng như thiết lập một mẫu và các trang tiếp theo xuất phát từ mẫu và ghi đè các khu vực nội dung, tương tự như Trang chính.

Bất kỳ ví dụ nào cũng tuyệt vời !!

Trả lời

4

Đầu tiên, tương đương với ASP.Net trong Java sẽ là một khung công tác web, chẳng hạn như khung công tác bạn đề cập (Gạch, Tấm và Vận tốc).

Trang chính cung cấp khả năng xác định các trang theo nội dung được phân giải thành mẫu chính.

Trang chính là tính năng của ASP.Net (khung công tác web .Net), vì vậy bạn đang tìm kiếm một tính năng tương tự như trang chính trong khung công tác web Java.

http://tiles.apache.org/framework/tutorial/basic/pages.html cung cấp một số ví dụ cơ bản bằng cách sử dụng Gạch và JSP để triển khai thực hiện điều gì đó tương tự với Struts, một khung công tác web Java. Trong trường hợp này, chức năng Master Pages là một plugin trên đầu trang của Struts.

Vận tốc là một công cụ tạo khuôn mẫu chung, không chuyên cho các trang web và chắc chắn phức tạp hơn bạn cần. (Tôi đã nhìn thấy nó được sử dụng để tạo mã.)

Tấm thảm là một ngăn xếp web đầy đủ tính năng hơn so với Ngói và có lẽ tốt cho mục đích của bạn. Chức năng tạo khuôn mẫu của nó bao gồm việc tạo một thành phần và đưa tất cả các đánh dấu chung vào đó. Ví dụ: http://www.infoq.com/articles/tapestry5-intro.

Các chi tiết cụ thể về sự khác biệt này dựa trên khung web Java mà bạn chọn.

12

Bạn cũng nên xem Facelets; có một số good introductory article trên DeveloperWorks.

Thẻ Facelets <ui:insert/> có thể so sánh với thẻ ASP.NET <asp:ContentPlaceHolder/> được sử dụng trong trang chính; nó cho phép bạn cung cấp nội dung mặc định cho vùng đó của trang, nhưng điều này có thể bị ghi đè.

Để điền mẫu Facelets vào một trang khác, bạn bắt đầu với phần tử <ui:composition/> trỏ đến tệp mẫu. Điều này tương đương với việc khai báo thuộc tính MasterPageFile trong một trang ASP.NET.

Bên trong phần tử <ui:composition/>, bạn sử dụng các phần tử <ui:define/> để ghi đè các giá trị mặc định của mẫu, tương tự như cách sử dụng thẻ <asp:Content/>. Các phần tử này có thể chứa bất kỳ loại nội dung nào - từ các chuỗi đơn giản đến các phần tử JSF.

Vì vậy, để mang lại cho nó tất cả cùng nhau ...

Trong master.xhtml:

<!-- HTML header content here --> 
<ui:insert name="AreaOne">Default content for AreaOne</ui:insert> 
<ui:insert name="AreaTwo">Default content for AreaTwo</ui:insert> 
<!-- HTML footer content here --> 

Trong trang.xhtml:

<ui:composition template="/WEB-INF/templates/master.xhtml"> 
    <ui:define name="AreaOne">Here is some new content</ui:define> 
    <ui:define name="AreaTwo"> 
    <p>Some new content here too</p> 
    </ui:define> 
</ui:composition> 

Và điều này sẽ làm như sau:

<!-- HTML header content here --> 
Here is some new content 
<p>Some new content here too</p> 
<!-- HTML footer content here --> 

Bạn cũng có được một số lợi ích khác với Facelets, chẳng hạn như khả năng tái sử dụng các thành phần trang web với dữ liệu khác nhau.

(Edited để cung cấp thêm thông tin.)

2

Tôi đã sử dụng sitemesh trong các dự án trước đó và nó rất dễ dàng để thiết lập. Về cơ bản, bạn tạo trang trí tương đương với trang chính. Sau đó, bạn xác định trang con nào sử dụng trình trang trí nào. Xem introduction to sitemesh để biết thêm thông tin.

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