2012-02-25 11 views
5

Wygląd płytek i witryn jest dość popularny, ale te rzeczy są naprawdę stare i wyglądają okropnie w porównaniu do obecnych, niesamowitych rzeczy z np. Ruby (ERB) lub PHP (Open Power Template). W dzisiejszych czasach silniki szablonów umożliwiają wygodne szablonowanie (wstawianie zmiennych, autoescaping w zależności od kontekstu, iterowanie poprzez Iterables, uzyskiwanie dostępu do właściwości komponentu bean) i układanie (np. Nagłówki, stopki i nadpisywanie oraz dodawanie do niektórych części zdefiniowanych w obiekcie macierzystym) bez jakiejkolwiek trudnej konfiguracji i bez potrzeba zmiany obecnego stosu (np. ramka internetowa).JSP, Sitemesh and Tiles hardcore - wszelkie alternatywy?

Przykład 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> 

Przykład 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> 

Szukam lepszych Facelets, że nie będzie wymagać mnie, aby zmienić cały stos - Jestem nie zamierzamy przystosować całego projektu do JSF lub Wicket tylko po to, aby wykorzystać lepsze widoki.

Silnik szablonów nie powinien wymagać żadnych dodatkowych apletów ani filtrów (bez logiki opartej na adresie URL). Chcę programowo używać silnika. Możliwym przypadkiem jest zdefiniowanie niestandardowego ViewResolver na wiosnę 3.

Byłoby idealnie, gdyby układy nie były zdefiniowane z góry w pliku konfiguracyjnym. Nie jest to konieczne, jeśli po prostu zdefiniujesz widok nadrzędny w pliku szablonu.

Ramy mogą być na górze strony JSP, ale nie muszą. Zaletą jest możliwość użycia taglibów dostarczanych przez inne frameworki (np. Spring).

A może wszystko już jest w Sitemesh/Tiles, ale potrzebuje dużo konfiguracji? Jeśli znasz jakąś przykładową konfigurację, która pozwala osiągnąć wszystkie wymienione cele, daj mi znać.

Powiązane pytanie: what alternatives exist to Sitemesh to help layout JSP/JSTL page footers/headers in a Spring MVC app? - moje pytanie dotyczy również szablonów i nie jest ograniczone do Spring Web MVC.

+0

Dlaczego uważasz, że Płytki 2 są staroświeckie? Właśnie przeoczyłem ERB, ale wydaje się, że możesz osiągnąć te same funkcje, używając na przykład Tiles 2 i Velocity. Czego potrzebujesz? – sinuhepop

+0

W tym miejscu odradza się zwracanie się o sugestie dotyczące ram. Jeśli chcesz [edytować] wszystkie żądania dla takich osób i zadać to pytanie, na które można odpowiedzieć, nie klikając poza nim, zrób to i oznacz, aby ponownie otworzyć. Dzięki. – Will

Odpowiedz

3

mam zawsze supported the idea that JSP is a good-enough view technology który jest również użyteczny dla szablonów (z wykorzystaniem obejmuje)

Dla programowej obsługi używam prędkość, która jest dość proste i jednoznaczne.

Najlepszą technologią widzenia, jaką spotkałem w świecie Java, jest GSP Grails, ale może być konieczna migracja całej warstwy internetowej do grails, co nie zawsze jest możliwe.

Po prostu ostatnia uwaga - cokolwiek robisz, nie używaj freemarkera. Jest to niepotrzebnie skomplikowane i nie można łatwo wykonać prostych zadań.

+2

Przeczytałem to wcześniej. Muszę przyznać, że posiadanie skomplikowanego stosu składającego się z Sitemesh, Tiles, Velocity i wielu plików konfiguracyjnych nie jest dobre. Jednak proste strony JSP nie pomagają w układaniu i są dość słabe w szablonach. Będąc przyzwyczajonym do dobrych silników szablonów z Ruby, PHP, dość frustrujące jest to, że nie ma odpowiednika w Javie - stos, nad którym pracuję przez większość czasu. :( – Nowaker

+1

grails jest dobre dla tego - (g) tory – Bozho

+3

To jest cały stos.Nie widzę powodu, dla którego programiści powinni migrować istniejący projekt do JSF tylko po to, by używać Facetów, po Grails po prostu używać GSP i tak dalej. – Nowaker