Skip to main content

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

Course Review: The Bitfountain iOS 8 with Swift Immersive

This is second big iOS learning project. For first one read iOS Programming book review. As I only have two of them done I have to compare them somehow.

I am mindful that it took me a really long time to finish it (since last autumn). For a couple of months this year I didn't even have the internet to learn it, so it could not be helped. But last half of the June I've spent watching the videos every day and managed to finish it before any new internet problems.

So how was it?
In my opinion, it's great if you're starting out. There are a lot of basics, and seeing how to do things in XCode just makes your learning much easier than looking at the photos in the book. On the other hand, learning is more shallow and it is much easier to just follow the videos and learn only the basics without bigger picture about iOS SDK. I somehow missed more challenging exercises (even though I don't like to do them ;)

Length:
Course it pretty long but many videos are quite short (1-2…

How to Learn when Life is Short

I haven't really think this through but I have read really interesting articles recently and I just wanted to write for myself later.

Life is Short by Paul Graham

It's just that, learn from people older that you what is most important, and that life actually is short...

Instead of Goals or Resolutions, Try Creating Rules by Leo Babuta

In the time of New Year Resolutions, it's good to read something that is proposing different way of achieving things. Still I see much more value in habits than setting goals. But...

The Easy Way To Learn Hard Stuff by Per Harald Borgen
It's something that I read from time to time and I know it works sometimes for me. The things I learn then are really learned and something Jakub Wasilewski  has told me many times to do. Still it's uncomfortable and for some reason, I have failed to use this method more than once or twice. Writing it here so maybe I can think about it more and figure out how to do that more often.

Towards an understandin…

Hero's Journey in Presentations

Artur Skowroński recommended me: Want a Better Pitch? Watch This. by Andy Raskin and I think it is so great and applicable to all kinds of talks that I want to help it get more popular.
So the plan of presentation is going to follow these steps: Enemy - ProblemWhy now? - call to actionShow how the world will look like without the problemProblemsEvidence that you fixed the problem The image at the top is because it reminds me of Hero's Jurney. It has fewer steps but there is a lot of similarities. Especially #3 made me realize that grand vision of the future is something that I should have used in my talks.  The result at the start of the presentation makes a lot of sense actually. Everyone already knows that I speak about something because I probably fixed it and if you tell about it at the end then it might be hard for some people to see the bigger picture in the solution you're going to present.