New blog domain: kula.blog

It's still work in progress but new posts will be published on  https://kula.blog/ Thanks to 11ty base blog RSS is working from the start so it should be easy to add to your reader if you still use any :) If now then I hope you can sign up to the newsletter where I'll be publishing new posts and interesting articles to it from time to time. Please use  kula.blog  from now on.

Pierwszy projekt JSF w Eclipse IDE

Wielu może uznać to za co najmniej dziwne iż pisząc aplikacje w JSF praktycznie nie używam i co więcej do dzisiaj nie potrafiłem nawet stworzyć projektu JSF w Eclipse! Na swoją obronę dodam iż Eclipse jeśli chodzi o prostotę utworzenia projektu JSF nie jest zbyt prosty, na pewno wersja Galileo której dzisiaj używałem jest łatwiejsza niż Ganymede na którym próbowałem poprzednio... jednak to nadal nie ten poziom co NetBeans. A problem był dość prosty, ale jak zawsze okazuje się to dopiero po jego rozwiązaniu :(
Od początku.
Tworzę nowy Dynamic Web Project, ustawiam dla niego konfigurację JSF 1.2, oraz dodaję biblioteki... Miałem już pobrane biblioteki JSF 1.2, dodałem je więc do nowego User Library, dodałem także JSTL 1.2, który też jest wymagany. Tworze projekt... od tego momentu, męczyłem się okropnie... kontener po prostu nie znajdował javax.faces.webapp.FacesServlet. No jakie to proste, ale przecież mam to w bibliotekach! Nie pomogły krzyki ani groźby, projekt nie chce ruszyć i wywala mi błędy. Chwila zastanowienia... coś musi być nie tak z bibliotekami, oglądam, przeglądam, poprawiam, dodaje, usuwam ...i NIC.
Jest takie powiedzenie: "Jak wszystko inne zawiedzie, przeczytaj instrukcje obsługi." Pora więć poszukać postów ludzi mądrzejszych i może jakiś tutorial przeczytać/przerobić... Jak już szukać to najlepiej na stronie Eclipse: http://help.eclipse.org/galileo/index.jsp . O ile struktura fajnie działa na Ajaxie, o tyle jest problem z udostępnieniem dokładnego linka, pozostaje mi podać ścieżkę:
  • JavaServer Faces Tooling User Gide
  1. Getting Started
  2. Concepts
  3. Tasks
  4. Reference
  5. What's new
  6. Legal
Tak wygląda interesująca mnie sekcja. Początkowo otworzyłem zakładkę Tasks a tam jak na moje życzenie: Creating New JSF Projects. Utworzyłem kolejny nowy projekt, ale... on też nie działa... uznałem że czas odrzucić precz godność i zajrzeć do zakładki Getting Started, zawierającej raptem 4 dokumenty w tym jeden z JSF w tytule: JSF Basic Tutorial.
Dzięki niemu wreszcie projekt działa! Ale właściwie co było nie tak? Sam nie wiem, to było moje może 5 otwarcie Eclipse, przy czym zwykle kończyło się to brakiem porozumienia i jego zamknięciem... Jednak coś z bibliotekami, to wiem na pewno...
Co jednak trzeba było zrobić inaczej:
Przy nowym projekcie, gdy widać okno JSF Capabilities, wybieramy User Library a następnie ikonkę z dyskietką i strzałeczką symbolizujące pobranie bibliotek(Download library). W nowym okienku należy wybrać werjsę JSF firmy Sun i zaczekać na ukończenie pobierania. Po pobraniu trzeba jeszcze dodać bibliotekę JSTL, jednak nie jak to zrobiłem poprzednio. Klikamy w ikonkę bibliotek(Mandage libraries) a następnie należy dodać nową bibliotekę JSTL 1.2 do której już we własnym zakresie trzeba dodać (przycisk Add JARs) plik jstl-1.2.jar.
To tyle jeśli chodzi o biblioteki, wszystko teraz działa tak jak działać powinno a ja zdałem sobie sprawę że Eclipse nie jest takie złe ;) Podoba mi się choćby edycja plików JSP w Web Page Editor, jednak nie jest on domyśly i trzeba go wywoływać poprzez kliknięcie na pliku .JSP i wybranie opcji: Open With->Web Page Editor. Bardzo dobrze sprawuje się także okno zarządzania plikiem faces-config, przydatne są choćby wizardy tworzenia nowych Managed Beansów.
Moim zdaniem zespół Eclipse powinien jeszcze uprościć tworzenie projektów. Dobrym przykładem jest tutaj NetBeans gdzie dla nowego projektu można dodać biblioteki JSF, Spring, Hibernate... NetBeans generuje nawet proste plik żeby było wiadomo od czego zacząć.

Na koniec tutoriala można uruchomić swoją aplikację, ale należy uważać jak ją się uruchomi, należy bowiem zaznaczyć plik login.jsp i dobiero wtedy uruchomić serwer, w przeciwnym wypadku dostaniemy ładne okienko błędu.

Wad Eclipse ciąg dalszy: chciałem jako startowy skonfigurować plik index.html który przekierowywał by do pliku faces/login.jsp mimo wielu prób nie udało mi się, serwer(Tomcat) zawsze startował z adresem /faces/index.jsp, naprawdę irytujące. Sama próba skonfigurowania spliku faces/login.jsp w web.xml jako startowego, też nie dała żadnych efektów. Dlaczego to działa w NetBeans?! Na koniec Tomcat by działać, tworzy w workspace swój folder/projekt o nazwie : Servers w dodatku jest on niezbędny do jego działania... jedyny plus to szybki dostęp do plików konfiguracyjnych Tomcata. Jedynym rozwiązaniem jest utworzenie pliku index.jsp i traktowanie go jako stałego i niekonfigurowalnego pliku uruchamiania aplikacji.
Dla zainteresowanych może on wyglądać na przykład tak:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="Refresh" content="0; URL=login.jsp" />
<title>Czekaj</title>
</head>
<body>
<h1>Czekaj na przekierowanie do serwisu...</h1>
</body>
</html>


Podsumowując podaję pełną ścieżkę do tutoriala dzięki któremu uznałem iż Eclipse nie jest takie złe na jakie wygląda ;)

http://help.eclipse.org/galileo/index.jsp
-> JavaServer Faces Tooling User Gide
->
Getting Started
->
JSF Basic Tutorial

Wszystkim początkującym życzę miłego czytania i samych pozytywnych emocji przy pracy z Eclipse+JSF! ;)

Ps. Na koniec mam prośbę do wszystkich czytających znających Eclipse w miarę ich możliwości o wyjaśnienie mi skąd te moje problemy się właściwie wzięły? Pozdrawiam.


Comments

Popular posts from this blog

How to use NPM packages from private repositories on bitbucket

How to simulate slow connection (developer proxy in Node.js)