Chodzi mi o to, że istnieje już aplikacja która jest stworzona na podstawie
zwyklego JSF, a teraz chciałbym dodać kilka nowych rzeczy wykorzystujących
technologie facelets.
Widze to jakos tak, że jak wpisze w przegladarce adres:
http://...../stary_adres.jsf
to bedzie on obsluzony jak dawniej
a jesli wpisze:
http://...../nowy_adres.facelets
to bedzie on obsluzony przez facelets?
Bedzie to działało?
Tylko co z tym:
<application>
<view-handler>
com.sun.facelets.FaceletViewHandler
</view-handler>
</application>
Jedna aplikacja moze miec wiele koegzystujących <view-handler> ow?
Mógłby ktoś opisać taką konfigurację (web.xml, faces-config.xml)?
--
Pozdrawiam
Rafal
Tak. Ja widzę facelets w tym świetle: JSF 1.1 + facelets = JSF 1.2 z
tym, że lewa strona działa na Java EE 1.4, podczas gdy druga strona
wymaga Java EE 5.
> Chodzi mi o to, że istnieje już aplikacja która jest stworzona na podstawie
> zwyklego JSF, a teraz chciałbym dodać kilka nowych rzeczy wykorzystujących
> technologie facelets.
Co dokładnie?
> Widze to jakos tak, że jak wpisze w przegladarce adres:
> http://...../stary_adres.jsf
> to bedzie on obsluzony jak dawniej
> a jesli wpisze:
> http://...../nowy_adres.facelets
> to bedzie on obsluzony przez facelets?
facelets to rozszerzenie JSF (zgodnie z jego zasadami) i wywołanie *.jsf
albo *.faces spowoduje uruchomienie infrastruktury facelets.
> Bedzie to działało?
Jak najbardziej. Wszystko zależy od mapowania w deskryptorze aplikacji
internetowej (WEB-INF/web.xml).
> Tylko co z tym:
> <application>
> <view-handler>
> com.sun.facelets.FaceletViewHandler
> </view-handler>
> </application>
>
> Jedna aplikacja moze miec wiele koegzystujących <view-handler> ow?
(Raczej) nie. Tutaj nie jestem dokładnie pewien, czy może być wiele
ViewHandler. Zasiedziałem się w EJB3 i dodatkowo urlop wyczyścił mi
pamięć. Sądzę, że FaceletsViewHandler korzysta (deleguje) utworzenie
View do domyślnego ViewHandler dostarczanego przez JSF, ale nie
pamiętam, w jaki sposób należałoby ustawić faces-config.xml. COś mi
jednak świta, że może być wiele ViewHandler i kolejność wyznaczona jest
przez kolejność wpisów w faces-config.xml. Właśnie na tym polega siła JSF.
> Mógłby ktoś opisać taką konfigurację (web.xml, faces-config.xml)?
Zajrzyj do przykładów facelets i myśl o facelets jako o JSF 1.2 dla Java
EE 1.4.
Jacek
--
Jacek Laskowski
http://www.JacekLaskowski.pl
Myślę, że możesz równiez popatrzec na przyklady facelets + jsp
oddzielnie, bo widzialem kiedys takie problemy u ludzi.
A tak przy okazji, to nie wystarczy zwykle zmapowanie wszystkiego na
faceletsy? Wydaje mi sie ze jesli kod jest dobrze napisany w jsf to
facelets powinien go przetworzyc i poprawnie wyrenderowac (z
tomahawkiem trzeba bylo cos pozmieniac), ale to tylko moja intuicja.
melon
I teraz zaistniała potrzeba dodania do aplikacji jakiegos systemu szablonów
dokumentow.
Niestety nie znam jeszcze konkretnych szczegółów.
Słyszałem natomiast głosy, że do tego calu miała by być użyta biblioteka
velocity.
Po pobieżnym zapoznaniu się z nią uznałem, że facelets + jstl byłoby lepsza
alternatywa.
Chciałbym jednak dotychczas stworzone i przetestowane setki plikow *.jsp
(myfaces + dodat. biblioteki komponentow+ ...) pozostawić tak jak były,
gdyż dodanie TERAZ do ich obrobki facelets jako domyślny view handler na
pewno (?) spowodowałoby jakieś problemy.
--
Pozdrawiam
Rafal
pozdrawiam
maciej
No własnie mam tego świadomość.
Faceletów chciałem użyć do osobnego modułu aplikacji, nie naruszając tym
samym tego co do tej pory zostało stworzone.
Dlatego wymyśliłem sobie zeby wszystkie adresy *.jsf były mapowane jak
dawniej (bez użycia facelet), a adresy np. *.facelet były mapowane inaczej
tzn przechodziły przez facelets.
Stad moje pytanie jak uzyskać taki efekt za pomoca konfiguracji web.xml i
faces-config.xml.
--
Pozdrawiam
Rafal
> Dlatego wymyśliłem sobie zeby wszystkie adresy *.jsf były mapowane jak
> dawniej (bez użycia facelet), a adresy np. *.facelet były mapowane inaczej
> tzn przechodziły przez facelets.
>
> Stad moje pytanie jak uzyskać taki efekt za pomoca konfiguracji web.xml i
> faces-config.xml.
Myślałem, myślałem i wymyśliłem, a w zasadzie przeczytałem/znalazłem ;-)
A już miałem odpowiedzieć, że się nie da. Lektura "How do I use Facelets
and JSP in the same application?" [1] to było to - zmieniam zdanie da
się i działa.
index.jsp:
<%@page pageEncoding="UTF-8"%>
Czy chcesz uruchomić aplikację JSF z czy bez facelets?
<ul>
<li><a href="faces/welcomeJSF.jsp">Uruchom aplikację JSF bez
facelets</a></li>
<li><a href="faces/welcomeFacelets.xhtml">Uruchom aplikację JSF z
facelets</a></li>
</ul>
Część web.xml:
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.jsp</param-value>
</context-param>
<context-param>
<param-name>facelets.VIEW_MAPPINGS</param-name>
<param-value>*.xhtml</param-value>
</context-param>
a reszta jak wymagane przez facelets. Przy takiej konfiguracji strony
jsp są traktowane jako "czysty" JSF, podczas gdy pliki xhtml będą
obsługiwane przez facelets.
Jacek
[1]
http://wiki.java.net/bin/view/Projects/FaceletsFAQ#How_do_I_use_Facelets_and_JSP_in