Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

JSF-facelets a pozycjonowanie i bezposredni URL

38 views
Skip to first unread message

Egifford

unread,
Jun 30, 2008, 1:45:13 PM6/30/08
to
Witam

zawsze zastanawialo mnie jak wyglada sprawa pozycjonowania w google jesli
chodzi o jsf-y z uzyciem facelets.

Zalózmy ze tworzymy jakis serwis aukcyjny za pomoca tabeli JSF-owej oraz z
wykorzystaniem facelets. W tabeli wyswietlane sa wyszukane przez
uzytkownika aukcje ( jak na allegro ) i teraz rodza sie dwa pytania:

1) czy google doda wyniki wyszukania ( oczywiscie ze nie kazde ale czy
roboty w jakis sposob odnajda dana aukcje? )

i ciekawsze

2) jesli uzytkonik chcialby przeslac swojemu koledze bezposredni adres do
wybranej aukcji to... no wlasnie.
Przeciez URL dla Facelets zawsze jest taki sam a parametry ida jakby
niewidoczne dla uzytkownika. W przegladarce widzimy adres URL akutalnie
ogladanej strony ale bez jakichkolwiek parametrow. Jak wobec uzyskac efekt
"odnosnika" do interesujacej nas aukcji.


Jestem ciekaw czy ktos kiedys zetknal sie z podobnym problemem.


--
Używam klienta poczty Opera Mail: http://www.opera.com/mail/

Rafal

unread,
Jun 30, 2008, 6:15:08 PM6/30/08
to


Problem, który przytoczyłeś jest dosyć znany.
Więcej na ten temat możesz przeczytać googlając po wyrażeniu:
bookmarking jsf

W skrócie jsf zdecydowanie skupia się na żądaniach typu post i ta wada
(m.in nie możliwość zindeksowania konkretnych stron) jest często
prezentowana przez przeciwników tego frameworka.

Nie mniej jednak jsf obsługuje parametry w żądaniach typu Get, np:
http://host/jsfproject/auctions.jsf?id=116

adresy takie można skladać np za pomocą:
<h:outputLink value="somepage.jsf">
<f:param name="foo" value="bar" />
foo
</h:outputLink>

lub

<h:commandLink value="somepage.jsf">
<f:param name="foo" value="bar" />
foo
</h:commandLink>

Pózniej można się odwoływać do tych parametrów za pomocą beana:
<managed-bean>
...
<managed-bean-scope>
request
</managed-bean-scope>
<managed-property>
<property-name>foo</property-name>
<property-class>java.lang.String</property-class>
<value>#{param.foo}</value>
</managed-property>
</managed-bean>

lub bezpośrednio ze strony za <h:outputText value="#{param.foo}"
czy w środku managed beana:
FacesContext context = FacesContext.getCurrentInstance();
Map requestMap = context.getExternalContext().getRequestParameterMap();
String value = (String)requestMap.get("paramName");

Kilka linków ad. tematu:
http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=82&t=000835
http://forum.java.sun.com/thread.jspa?threadID=581495

Pod tym linkiem ad. facelets też są wykorzystywane <f:param> w
<h:commandLink/>
http://www-128.ibm.com/developerworks/java/library/j-facelets/

Obecnie do pełnego wsparcia żądań typu GET (restful) dla JSF został
stworzony jsr zwany RestFaces:
http://www.theserverside.com/news/thread.tss?thread_id=47561


Ps. Niestety nie jestem pewien wszystkiego co przedstawiłem powyżej, gdyż
do tej pory jeszcze nie tego nie używałem. :) Gdybyś testował do
rozwiązania i wynikły jakieś roznieżności, podziel się tymi wynikami. :)

--
Pozdrawiam
Rafal

Rafal

unread,
Jun 30, 2008, 6:51:47 PM6/30/08
to
Hmmm..., problem jednak w tym, że w przykładach , które przedstawiłem
jedynie:

<h:outputLink value="somepage.jsf">
<f:param name="foo" value="bar" />
foo
</h:outputLink>

lub bezposrednie sklejenie linka i otoczenie tagiem <a> umożliwia wysłanie
żądanie typu Get.

<h:command... /> musi być w znaczniku <h:form> więc automatycznie jest
POST.

Podstawowa różnica z ządaniami GET i POST w JSF jest taka, że jedynie te
drugie są obsługiwane full service ze strony JSF, tzn przechodzą przez
wszystkie fazy cyklu życia.

Get przechodzi jedynie przez restore_view i render_response, toteż
przekazane parametry możemy co najwyżej wyświetlić. NIe będą one miały
niestety większego wpływu na resztę wygenerowanego widoku, gdyż pojawiły
się dla JSF'a póżno, tj w ostatniej fazie przetwarzania.


Można by próbować ręcznie obsługiwać fazę before_render_response. Ale to
jest dosyć kłopotliwe.


PS. Jeśli gdzieś popełniłem błąd proszę o zwrócenie uwagi.


--
Pozdrawiam
Rafal

Marx

unread,
Jul 1, 2008, 2:03:18 AM7/1/08
to
Mozna zastosowac np Seam'a, ktory potrafi tworzyc adresy "zakladkowe"
Marx

Egifford

unread,
Jul 4, 2008, 1:53:08 PM7/4/08
to
DZieki wielkie - sa to bardzo cenne uwagi - postaram sie pobawic i zobacze
co wyjdzie.

CHyba jest to tymczasowe bo w JSF 2.0 czytalem wszystko zostanie juz
zalatwione

pozdrawiam

Brzezi

unread,
Jul 17, 2008, 10:21:45 AM7/17/08
to
wto, 01 lip 2008 o 08:03 GMT, Marx napisał(a):

> Mozna zastosowac np Seam'a, ktory potrafi tworzyc adresy "zakladkowe"

Tak, bardzo polecam Seama.
Czytam sobie rozne artyklu i ksiazki o seamie, i tam sa opisy, co Seam
naprawia w JSF, czytajac to, podejscia zastosowane w JSF wydaja sie bardzo
"glupie" i nie wpadlbym na pomysl aby stosowac czyste JSF, poza tym, ze
JSF to wlasciwie tylko V*, a brakuje w nim w pelni funkcjonalnego C*

* to odnosnie MVC

Pozdrawiam
Brzezi
--
[ E-mail: brz...@enter.net.pl ][ Co mowi blondynka gdy budzi sie rano ]
[ Ekg: #3781111 ][ pod krowa? ]
[ LinuxUser: #249916 ][ - Co? Wy wszyscy czterej jeszcze tutaj? ]

Michał Margiel

unread,
Jul 17, 2008, 3:50:48 PM7/17/08
to
O! A ja się przyłącze do tematy z trochę innym pytaniem. Bo problem
ten chodzi mi po głowie cały dzień.
Chciałbym poznać Wasze zdanie czy teraz kiedy mamy JSF 1.2, SEAM,
UEL[1], JSTL 1.2 jeszcze do czegokolwiek nadają się facelets ? Bo ja
już dziś chyba osiągnąłem apogeum irytacji. Nie wspomnę już o
dodatkowym mapowaniu komponentów, ale ograniczona funkcjonalność JSTL
boli mnie jak odcisk między palcami. Nie dość, że jest tylko kilka
tagów dostępnych to jeszcze są one ograniczone. Np dziś potrzebowałem
takiej wersji tagu <c:set>

<c:set var="name">value</c:set>

I co się okazało? guzik z pętelką! JSTL-facelets wymaga atrybutu
value="", a ja go nie mogę podać. bo mam w nim wynik innego taga.

Czy są jeszcze jakiekolwiek zalety tego "czegoś"[2]? czy wraz z
wymienionymi przeze mnie technologiami o facelets powinniśmy
zapomnieć? Powiem wam szczerze że ja już od dłuższego czasu noszę się
z wywaleniem go z naszej aplikacji i po dzisiejszym dniu chyba
naprawdę to zrobie!

[1] Unified EL - jak by ktoś nie wiedział
[2] jak już pisałem - poziom irytacji osiągnął apogeum :)

--
Pozdrawiam serdecznie
Michał Margiel

Brzezi

unread,
Jul 17, 2008, 2:59:20 PM7/17/08
to
czw, 17 lip 2008 o 21:50 GMT, Michał Margiel napisał(a):

> O! A ja się przyłącze do tematy z trochę innym pytaniem. Bo problem
> ten chodzi mi po głowie cały dzień.
> Chciałbym poznać Wasze zdanie czy teraz kiedy mamy JSF 1.2, SEAM,
> UEL[1], JSTL 1.2 jeszcze do czegokolwiek nadają się facelets ?

Facelets jest mocno promowane wlasnie przez Seama, jest uzywany jako
domyslny renderer...

Jak dla mnie faceletsy sa bardzo fajne i wygodne...

Pozdrawiam
Brzezi
--
[ E-mail: brz...@enter.net.pl ][ Co pozostaje wdowie po gorniku? ]
[ Ekg: #3781111 ][ - wyrabany przodek. ]
[ LinuxUser: #249916 ][ ]

Michał Margiel

unread,
Jul 17, 2008, 4:04:40 PM7/17/08
to
On 17 Lip, 20:59, Brzezi <usunto.brz...@enter.net.pl> wrote:
> czw, 17 lip 2008 o 21:50 GMT, Michał Margiel napisał(a):
>
> > O! A ja się przyłącze do tematy z trochę innym pytaniem. Bo problem
> > ten chodzi mi po głowie cały dzień.
> > Chciałbym poznać Wasze zdanie czy teraz kiedy mamy JSF 1.2, SEAM,
> > UEL[1], JSTL 1.2 jeszcze do czegokolwiek nadają się facelets ?
>
> Facelets jest mocno promowane wlasnie przez Seama, jest uzywany jako
> domyslny renderer...
>
> Jak dla mnie faceletsy sa bardzo fajne i wygodne...

Szczerze mówiąc to liczyłem na jakieś argumenty a nie
"są fajne, wygodne i w ogóle"

Brzezi

unread,
Jul 17, 2008, 3:13:56 PM7/17/08
to
czw, 17 lip 2008 o 22:04 GMT, Michał Margiel napisał(a):

> Szczerze mówiąc to liczyłem na jakieś argumenty a nie
> "są fajne, wygodne i w ogóle"

Za ich pomoca wygodnie i szybko tworzy sie szablony, wystarczy zajrzec do
dowolnego przykladu Seama...

To juz dodatek seama, ale bardzo podoba mi sie zastosowanie:

<s:decorate template="edit.xhtml">
<ui:define name="label">Country:</ui:define>
<h:inputText value="#{location.country}" required="true"/>
</s:decorate>

dzieki temu robi sie szybko i latwo efektowne formularze.


Nie wiem co moge jeszcze napisac, moze napisz co Tobie sie w nich nie
podoba :)

Pozdrawiam
Brzezi
--
[ E-mail: brz...@enter.net.pl ][ ]
[ Ekg: #3781111 ][ Abstynent - cz\xB3owiek niepoci\xB1gaj\xB1cy. ]
[ LinuxUser: #249916 ][ ]

Michał Margiel

unread,
Jul 17, 2008, 4:29:07 PM7/17/08
to
On 17 Lip, 21:13, Brzezi <usunto.brz...@enter.net.pl> wrote:
> czw, 17 lip 2008 o 22:04 GMT, Michał Margiel napisał(a):
>
> > Szczerze mówiąc to liczyłem na jakieś argumenty a nie
> > "są fajne, wygodne i w ogóle"
>
> Za ich pomoca wygodnie i szybko tworzy sie szablony, wystarczy zajrzec do
> dowolnego przykladu Seama...
>
> To juz dodatek seama, ale bardzo podoba mi sie zastosowanie:
>
> <s:decorate template="edit.xhtml">
>         <ui:define name="label">Country:</ui:define>
>         <h:inputText value="#{location.country}" required="true"/>
> </s:decorate>
>
> dzieki temu robi sie szybko i latwo efektowne formularze.
>
> Nie wiem co moge jeszcze napisac, moze napisz co Tobie sie w nich nie
> podoba :)

No napisałem, co mi się nie podoba.
szablony można załatwić tag filme, lub masą innych frameworków, nie
tracąc przy tym siły jstla ani nie musząc mapować wszystkeigo na
kolejne xmle.

Wszystkei inne, ogromne kiedyś, zalety Facelets zostały już
zaimplementowane w wymienionych przeze mnie technologiach.
A tak w ogóle to co ma wspólnego podany przez Ciebie fragment kodu z
Facelets po za (użytym chyba na siłe - przyznaj się :) ) UI:define.

Brzezi

unread,
Jul 17, 2008, 3:36:59 PM7/17/08
to
czw, 17 lip 2008 o 22:29 GMT, Michał Margiel napisał(a):

> A tak w ogóle to co ma wspólnego podany przez Ciebie fragment kodu z
> Facelets po za (użytym chyba na siłe - przyznaj się :) ) UI:define.

Przyznaje sie :) ale nie do konca :)
Bardzo podoba mi sie funkcjonalnosc <s:decorate>, i skrotem myslowym
skojarzylem to z faceletsami, dopiero przy wklejaniu zorientowalem sie ze
to tag seamowy... :) (kolejny argument za Seamem :D)

jak narazie jestem zadowolony z faceletsow, moze inaczej, nie daly mi
powodu do frustracji... robia to czego narazie oczekuje :)


PS. czytam sobie wlasnie Seam in Action, tak na nowo sobie przypominam
wszystko, bo mialem troche przerwy w fascynacji Seamem, i za kazdym razem
jak widze funkcjonalnosci jakie sa dostepne, to "opada mi szczeka" :D

Pozdrawiam
Brzezi
--
[ E-mail: brz...@enter.net.pl ][ ]

[ Ekg: #3781111 ][ ]
[ LinuxUser: #249916 ][ ]

Michał Margiel

unread,
Jul 17, 2008, 4:50:24 PM7/17/08
to
On 17 Lip, 21:36, Brzezi <usunto.brz...@enter.net.pl> wrote:
> czw, 17 lip 2008 o 22:29 GMT, Michał Margiel napisał(a):
>
> > A tak w ogóle to co ma wspólnego podany przez Ciebie fragment kodu z
> > Facelets  po za (użytym chyba na siłe - przyznaj się :) ) UI:define.
>
> Przyznaje sie :) ale nie do konca :)
> Bardzo podoba mi sie funkcjonalnosc <s:decorate>, i skrotem myslowym
> skojarzylem to z faceletsami, dopiero przy wklejaniu zorientowalem sie ze
> to tag seamowy... :) (kolejny argument za Seamem :D)
>
> jak narazie jestem zadowolony z faceletsow, moze inaczej, nie daly mi
> powodu do frustracji... robia to czego narazie oczekuje :)
>
> PS. czytam sobie wlasnie Seam in Action, tak na nowo sobie przypominam
> wszystko, bo mialem troche przerwy w fascynacji Seamem, i za kazdym razem
> jak widze funkcjonalnosci jakie sa dostepne, to "opada mi szczeka" :D


Z seam pracuje na co dzień, ale tego co pokazałeś nie znałem. Sam
muszę jakaś ksiażke przeczytać. bo jedynie czytałem dokumentacje. Nie
skończyłem, nie byłem w stanie chociaż niektórzy mówią ze dokumentacje
seama czyta się jak ksiażke. (mam na ten temat inne zdanie :) )

Wracając do faceletow to właśnie dokładnie o to mi chodzi co wynika z
naszej rozmowy - ja nie potrafie podać chociaż jednego argumentu aby
używać faceletow, myślałem ze może Wy dacie rade. Ale widzę, ze też
będzie cieżko :D.

ps. wie ktoś może jak w faceletach zaimportować stronę z innej
aplikacji ? w JSTL chyba się to robi przez <c:import> (wybaczcie jeśli
pomyliłem taga), w faceletowej wersji JSTLa oczywiście tego taga nie
ma.

Brzezi

unread,
Jul 17, 2008, 3:57:37 PM7/17/08
to
czw, 17 lip 2008 o 22:50 GMT, Michał Margiel napisał(a):

> Z seam pracuje na co dzień,

A jakiego srodowiska programistycznego uzywasz?

> ale tego co pokazałeś nie znałem.

wiec chyba nie korzystasz ani z seam-gen ani z JBoss Tools, bo ta
konstrukcja jest domyslnie uzywana w generowanych xhtmlach

> Sam muszę jakaś ksiażke przeczytać. bo jedynie czytałem dokumentacje. Nie
> skończyłem, nie byłem w stanie chociaż niektórzy mówią ze dokumentacje
> seama czyta się jak ksiażke. (mam na ten temat inne zdanie :) )

mysle ze dokumentacja nie jest zla :)

>
> Wracając do faceletow to właśnie dokładnie o to mi chodzi co wynika z
> naszej rozmowy - ja nie potrafie podać chociaż jednego argumentu aby
> używać faceletow, myślałem ze może Wy dacie rade. Ale widzę, ze też
> będzie cieżko :D.

ostatnio znalazlem cos takiego:
http://andrewfacelets.blogspot.com/2006/06/creating-composite-controls-with-jsf.html

Pozdrawiam
Brzezi
--
[ E-mail: brz...@enter.net.pl ][ brzezi:~# uptime ]
[ Ekg: #3781111 ][ 22:53:23 up 16 days, 1:19, 3 users, ]
[ LinuxUser: #249916 ][ load average: 0.67, 0.56, 0.49 ]

Michał Margiel

unread,
Jul 18, 2008, 7:02:43 AM7/18/08
to
kurde!
czy w facelets można w ogóle używać tagów jsp? chyba nie.. no po
prostu tragedia.

--
Michał Margiel

Brzezi

unread,
Jul 18, 2008, 9:36:39 AM7/18/08
to
piďż˝, 18 lip 2008 o 13:02 GMT, Michaďż˝ Margiel napisaďż˝(a):

> czy w facelets mo�na w og�le u�ywa� tag�w jsp? chyba nie.. no po
> prostu tragedia.

No nie, bo albo masz jsp, albo faceletsy, to sa dwie "przeciwstawne"
technologie, poczatkowo Seam byl oparty na JSP, chyba jeszcze za wersji
1.x, i mozliwe ze w poczatkowych 2.0, a teraz w najnowszych wersjach Seama
masz juz faceltsy...

Pozdrawiam
Brzezi
--
[ E-mail: brz...@enter.net.pl ][ brzezi:~# uptime ]

[ Ekg: #3781111 ][ 15:35:47 up 16 days, 18:02, 3 users, ]
[ LinuxUser: #249916 ][ load average: 0.18, 0.25, 0.26 ]

Michał Margiel

unread,
Jul 18, 2008, 10:20:48 AM7/18/08
to
On 18 Lip, 15:36, Brzezi <usunto.brz...@enter.net.pl> wrote:
> pią, 18 lip 2008 o 13:02 GMT, Michał Margiel napisał(a):
>
> > czy w facelets można w ogóle używać tagów jsp? chyba nie.. no po

> > prostu tragedia.
>
> No nie, bo albo masz jsp, albo faceletsy, to sa dwie "przeciwstawne"
> technologie, poczatkowo Seam byl oparty na JSP, chyba jeszcze za wersji
> 1.x, i mozliwe ze w poczatkowych 2.0, a teraz w najnowszych wersjach Seama
> masz juz faceltsy...

No własnie.. czyli na każą najprostrzą funkcjonalnośc ja musze pisac
komponent JSFowy? myslałem ze moia irytacja osiągnęła wczoraj apogeum,
ale nie.. okazuje sie że nie... chciałem zrobić klase która dziedziczy
po TagHandler, ale w niej chyba nie można nic pisac na strone..
przynajmniej ja nic nie znalazłem.
Cały dzień psu wiadomo gdzie :/

Brzezi

unread,
Jul 18, 2008, 9:39:30 AM7/18/08
to
piďż˝, 18 lip 2008 o 16:20 GMT, Michaďż˝ Margiel napisaďż˝(a):

> No w�asnie.. czyli na ka�� najprostrz� funkcjonalno�c ja musze pisac
> komponent JSFowy?

Jezeli tak bardzo chcesz to mozesz sobie chyba wybrac wmiare dowolny
renderer, mozesz zamaist xhtml uzyc jspx, ja przynajmniej tak kiedys
robilem, jak xhtml nie byl jeszcze dobrze obslugiwany w Eclipse, nie
podpowiadal skladni, wiec robilem sobie jspxy gdzie mialem uzupelnianie
tagow itp, nawet mieszalem i inkludowalem chyba jspxy z xhtml, oczywiscie
odrazu powiem ze to nie jest raczej dobre podejscie takie mieszanie :)

> mysla�em ze moia irytacja osi�gn�a wczoraj apogeum,
> ale nie.. okazuje sie �e nie... chcia�em zrobi� klase kt�ra dziedziczy
> po TagHandler, ale w niej chyba nie mo�na nic pisac na strone..
> przynajmniej ja nic nie znalaz�em.
> Ca�y dzie� psu wiadomo gdzie :/

W tym niestety Ci nie pomoge :( nie mialem jeszcze potrzeby pisania takich
faceletow

Co do zainkludowania jakiegos zdalnego zasobu, to mozesz to zrobic przez
komponent:

<h:outputText value="myBean.remoteResource" />

co w Semamie mogloby byc bardziej uniwersalne, bo moznabyloby
parametryzowac jaki zasob mamy pobrac:

<h:outputText value="myBean.loadRemoteResource('http://onet.pl/')" />

Pozdrawiam
Brzezi
--
[ E-mail: brz...@enter.net.pl ][ ]
[ Ekg: #3781111 ][ ]
[ LinuxUser: #249916 ][ ]

0 new messages