Součástí JSF implementace MyFaces je i balík rozšiřujících komponent Tomahawk. Ten obsahuje i komponentu pro wysiwyg editaci (<h:inputTextarea/>). Ta je celkem otřesná, pokud ji porovnáte třeba s FCKEditorem. Narazil jsem ovšem na FCKFaces – JSF plugin, který používá FCKEditor.
Instalace je jednoduchá. Stáhnete jar, přidáte do classpath (např. do pom.xml, nainstalujete do repository) a v JSP stránce můžete použít:
<ui:composition xmlns:fck="http://www.fck-faces.org/fck-faces"> <fck:editor value="#{akce.obsah}" width="100%" toolbarSet="Basic"/>
Aby ovšem modul fungoval správně (totiž všechny JavaScript soubory a obrázky jsou součástí jaru), musíte ještě použít FCKServlet a přidat jej do web.xml:
<servlet> <servlet-name>FCKServlet</servlet-name> <servlet-class>org.fckfaces.util.Servlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>FCKServlet</servlet-name> <url-pattern>/fckfaces/*</url-pattern> </servlet-mapping>
Začínám si myslet, že by bylo dobré, aby součástí JSF specifikace byl způsob exportu souborů potřebných pro JSF komponenty (MyFacesExtensions, FCKServlet, …). A přitom se jedná jen o poskytnutí souboru při požadavku.
No já jsem pár komponent z Tomahawku použil a tam při instalaci rovnou nabádají jak upravit web.xml aby se správně dotahovaly jejich resourcy (http://myfaces.apache.org/tomahawk/extensionsFilter.html). Ten jsem si do své aplikačky přidal a neměl jsem s ničím problémy.
Každopádně na co jsem narazil, je naprosto příšerná dokumentace. Tedy alespoň některých komponent. Použil jsem např komponentu Data Scroller a Extended Data Table a abych vše dokázal uzpůsobit svým potřebám, musel jsem dost dlouho studovat přímo jejich zdrojáky.
Já jsem s extensionsFilterem od Tomahawku také neměl žádné problémy. Pro FCKFaces je ale druhý. Už docela vidím, že takhle budu do web.xml přidávat 10 servletů/filtrů, aby poskytovali statický obsah.
Ale IMHO to jde lépe – dnes už také nemusím do Facelets registrovat jednotlivé knihovny tagů. Ony se prostě načtou sami.
Když si člověk dnes uvědomí, kolik kroků musí provést, aby mohl programovat v Javě s JSF a facelets, tak mi běhá mráz po zádech. Co budeme dělat za 10 let?
Za 10 let? No přece vařit kafe grafikovi 😀
Ale z druhé strany, porád je to jen front-end, největší know-how je v analýze a návrhu aplikace. Především těch, co jsou postaveny na databází.
To souhlasím. Někdy si říkám, jestli na webovou vrstvu nepaří spíš skriptovací jazyky ala Groovy, Ruby apod. Například po použití JSF jsem sice měl dobrý pocit z objektového návrhu – webová vrstva byla „čistá“ (znáte ten vnitřní pocit). Ale co jsem se natrápil s takovými prkotinami – jako např.:
1) volání něajké stránky uvnitř aplikace přes statické url
2) dynamické zobrazování komponent na stránkách (a zde opravdu nemám pocit, že jsem tuhle problematiku zvládl)
3) použití cizích komponent -> navíc i potom graficky vypadaly nevábně (což může být jen moje grafická neschopnost ;))
4) zabezpečení přístupu na stránky (lifecycle interceptor má sice své přednosti, ale dá to dost špekulování)
5) redirect on client – mezi redirecty se ztrácí JSF kontext …
atd.
Mám radši cestu, kterou se ubírá Spring. Tam jsem na podobné „nedomyšlenosti“ zatím nenarazil. Oni prostě dělají knihovnu pro programátory – s Myfaces JSF jsem takový pocit neměl.
K JSF: má opravdu nějaké mušky. Myslím, že autoři JSF vůbec nevěděli co to je REST (asi věděli, ale nepoužili).
Takže když použijete trošku jiný přístup než všude naházet <h:commandLink/>, a navíc k tomu máte nástroje, které umí konverzace (conversation), tak se dostanete celkem néjen k čistotě, ale i k efektivitě. Touto knihovnou je např. JBoss Seam (od stejného autora jako hibernate).
Mozna mam jiny zdroj, ale FCKFaces ze sf je k nicemu. Je to nedodelane, nedaji se nastavit rozmery… vlastne to vypada, ze to budu muset z vetsi casti dopsat sam. Nebo se mylim?
Zdravím,
máš zřejmě stejnou knihovnu. Vše co jsem potřeboval mi fungovalo:
Šířku jsem nastavil na 100% a zbytek nastavoval přes CSS velikostí DIVu.
Pokud něco přidáš, pošli to zpátky autorům 🙂