Kicsi, csak a könyvjelzőzhető linkek JSF-beli támogatását akarja megoldani, egyszerűen használható: röviden ennyit lehet elmondani a Restfaces-ről ([26]), amelyet szűrőként kell beilleszteni a webalkalmazásba. A Restfaces-zel két lehetőség van az ilyen linkek készítésére. Az elsőhöz szükséges egy XML fájl is. Egy JSF oldalon szereplő linket létrehozó kódrészlet a következő lehet:
<rest:link value="item"> <f:param name="itemId" value="#{item.id}" /> <h:outputText value="#{item.name}" /> </rest:link> <!-- item.xhtml?itemId=123 -->
15. ábra: Egy könyvjelzőzhető linket előállító restfaces tag
Az ehhez szükséges rest‑faces‑rules.xml konfigurációs fájl határozza meg az URL‑beli paraméterek és a backing bean mezők összerendelését (16. ábra), valamint a meghívandó backing bean metódust is. A paraméterek beállítása és a metódus meghívása a fenti rest:link tag által létrehozott linkre való kattintás hatására történik meg.
<?xml version="1.0" encoding="UTF-8"?> <rest-faces> <action name="item" value="#{itemBean.selectItem}"> <property param="itemId" value="#{itemBean.itemId}" /> </action> </rest-faces>
16. ábra: rest-faces-rules.xml példa
A második megoldáshoz nem szükséges az XML fájl, viszont nagy biztonsági kockázatot jelent, ugyanis az URL-be kerül a backing bean neve, a beállítandó tagváltozókkal és azok leendő értékével együtt. A veszély abban rejlik, hogy ezt a kliens szabadon módosíthatja, tehát bármilyen metódust meghívhat és bármilyen mező értékét tetszőlegesre állíthatja a hívás előtt – ellentétben az első megoldással, ahol csak az XML‑ben property tag-gel meghatározott mezők értékét befolyásolhatja a kliens.
<rest:link action="#{bean.method}"> <rest:param name="id" value="3" property="#{bean.id}"/> permalink </rest:link>
17. ábra: Példa rest-faces-rules.xml nélküli rest:link tag-re
Az XML nélküli mód használata hasonlít az XML-es változathoz (17. ábra), azonban a generált linkek a következőképp néznek ki:
http://localhost:8090/FeedGen-war/restmeta/ \ UrlListManagedBean.editUrl_id*UrlListManagedBean.editedUrlId \ *true*null.xhtml?id=12
18. ábra: Egy rest-faces-rules.xml nélkül előállított link
A probléma kiküszöbölhető, ha titkosítjuk az URL-t egy web.xml-ben megadott kulccsal (19. ábra), de ekkor elveszítjük a szép URL-eket (viszont elmenthetőek könyvjelzőként). A módszer további hátránya, hogy a kulcs változása esetén a linkek is megváltoznak.
<context-param> <param-name> org.restfaces.serializer.CryptActionSerializer.key </param-name> <param-value>a32543sd5fsdgs33</param-value> </context-param>
19. ábra: rest-faces-rules.xml nélküli linkek titkosítására szolgáló web.xml-beli bejegyzés
A második változat említett hátrányai miatt az elkészült programban az első, XML konfigurációs fájlt igénylő módot használtam.
Legutóbbi hozzászólások
9 év 15 hét
10 év 4 hét
10 év 8 hét
10 év 26 hét
11 év 28 hét
11 év 33 hét
11 év 33 hét
11 év 34 hét
11 év 44 hét
12 év 15 hét