2012-02-25 58 views
5

Gạch và Sitemesh trông khá phổ biến nhưng công cụ này thực sự cũ và trông khủng khiếp so với các nội dung tuyệt vời hiện tại, ví dụ: Ruby (ERB) hoặc PHP (Mở mẫu điện). Những công cụ template này cho phép tạo khuôn mẫu thoải mái (chèn biến, autoescaping tùy thuộc vào ngữ cảnh, lặp qua Iterables, truy cập các thuộc tính bean) và layout (ví dụ tiêu đề, footer và overriding và thêm vào một số phần được định nghĩa trong parent) mà không cần cấu hình khó khăn. cần thay đổi ngăn xếp hiện tại của bạn (ví dụ: khung web của bạn).JSP, Sitemesh và Tiles hardcore - bất kỳ lựa chọn thay thế nào?

Ví dụ parent.html:

<html> 
    <head> 
    <title> 
     <layout:part name="title"> 
     Default title 
     </layout:part> 
    </title> 
    <layout:part name="head" /> 
    </head> 
    <body> 
    <div class="menu" layout:part="menu"> 
     default menu 
    </div> 
    <div class="content" layout:part="content" /> 
    <div class="footer"> 
     (c) me 
    </div>  
    </body> 
</html> 

Ví dụ child.html

<layout:extend file="parent.html"> 
    <layout:fill name="title"> 
    Custom title 
    </layout:fill> 
    <layout:fill name="contnet"> 
    the content 
    {$var} from model 
    </layout:fill> 
</layout:extend> 

Tôi đang tìm Facelets tốt hơn, điều đó sẽ không yêu cầu tôi phải thay đổi toàn bộ stack - Tôi sẽ không thích ứng toàn bộ dự án với JSF hay Wicket chỉ để sử dụng các khung nhìn tốt hơn.

Công cụ mẫu không được yêu cầu bất kỳ servlet hoặc bộ lọc bổ sung nào (không có logic dựa trên URL). Tôi muốn sử dụng động cơ theo chương trình. Trường hợp sử dụng có thể là xác định ViewResolver tùy chỉnh trong Mùa xuân 3.

Sẽ là hoàn hảo nếu bố cục không được xác định trước trong tệp cấu hình. Điều đó không cần thiết nếu bạn chỉ định nghĩa khung nhìn cha mẹ trong tệp khuôn mẫu.

Khung có thể nằm trên cùng của JSP nhưng không phải. Lợi thế là khả năng sử dụng thẻ tag được cung cấp bởi các khung công tác khác (ví dụ: Spring).

Hoặc có thể mọi thứ đã có trong Sitemesh/Tiles nhưng cần nhiều cấu hình? Nếu bạn biết về bất kỳ cấu hình ví dụ nào cho phép đạt được tất cả các mục tiêu đã đề cập, hãy cho tôi biết về nó.

Câu hỏi liên quan: what alternatives exist to Sitemesh to help layout JSP/JSTL page footers/headers in a Spring MVC app? - câu hỏi của tôi cũng đề cập đến việc tạo khuôn mẫu và không giới hạn ở Spring Web MVC.

+0

Tại sao bạn cho rằng Gạch 2 có kiểu cũ? Tôi đã bỏ qua ERB, nhưng có vẻ như bạn có thể đạt được các tính năng tương tự bằng cách sử dụng Tiles 2 và Velocity, chẳng hạn. Bạn cần gì? – sinuhepop

+0

Yêu cầu đề xuất khung không được khuyến khích tại đây. Nếu bạn muốn [sửa] ra tất cả các yêu cầu như vậy, và làm cho câu hỏi này có thể được trả lời ở đây mà không cần nhấp vào off-site, hãy làm như vậy và gắn cờ để mở lại. Cảm ơn. – Will

Trả lời

3

Tôi có luôn supported the idea that JSP is a good-enough view technology đó cũng là có thể sử dụng cho các mẫu (sử dụng bao gồm)

Khi phải xử lý theo chương trình tôi sử dụng tốc độ, mà là khá đơn giản và dễ hiểu.

Công nghệ xem tốt nhất mà tôi đã gặp trong thế giới Java là GSP của grails, nhưng bạn có thể cần di chuyển toàn bộ lớp web của bạn sang grails, không phải lúc nào cũng là một tùy chọn.

Chỉ cần lưu ý cuối cùng - bất kể bạn làm gì, không sử dụng freemarker. Nó là không cần thiết phức tạp và bạn không thể dễ dàng đạt được các nhiệm vụ đơn giản.

+2

Tôi đã đọc phần này trước đây. Tôi phải thừa nhận rằng có một chồng phức tạp bao gồm Sitemesh, Gạch, Vận tốc và rất nhiều tập tin cấu hình không tốt. Tuy nhiên, các JSP đơn giản giúp bạn không có gì với cách bố trí và khá yếu với việc tạo khuôn mẫu. Được sử dụng cho các công cụ mẫu tốt từ Ruby, PHP, nó khá bực bội khi không có tương đương trong Java - ngăn xếp mà tôi làm việc hầu hết thời gian. :( – Nowaker

+1

grails là tốt cho rằng - (g) đường ray – Bozho

+3

Đây là toàn bộ stack.Tôi không thể thấy lý do tại sao các nhà phát triển nên di chuyển dự án hiện tại sang JSF chỉ để sử dụng Facelets, để Grails chỉ sử dụng GSP, v.v. – Nowaker