Page 83 - Linux_7

Basic HTML Version

Linux Inside
83
Linux Labs - Java EE
}
}
Δημιουργία της ιστοσελίδας index.xhtml
Το μόνο που απομένει πλέον, είναι να δημιουργήσουμε τη
σελίδα που θα εμφανίζει τους τίτλους των ταινιών της βάσης
δεδομένων με χρήση JSF. Δημιουργούμε, λοιπόν, τη σελίδα
index.xhtml η οποία περιέχει τον παρακάτω κώδικα:
<?xml version=’1.0’ encoding=’UTF-8’ ?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0
Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1
-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”
xmlns:h=”http://java.sun.com/jsf/html”
xmlns:ui=”http://java.sun.com/jsf/facelets”
xmlns:f=”http://java.sun.com/jsf/core”>
<ui:composition template=”./template.xhtml”>
<ui:define name=”body”>
<h:form>
<h:dataTable
value=”#{filmController.filmTitles}” var=”item” border=”0”
cellpadding=”2” cellspacing=”0” >
<h:column>
<f:facet name=”header”>
<h:outputText value=”Title”/>
</f:facet>
<h:outputText value=”#{item.title}”/>
</h:column>
</h:dataTable>
<br/>
</h:form>
</ui:define>
</ui:composition>
</html>
Η πιο ενδιαφέρουσα γραμμή στο παραπάνω αρχείο είναι η
<h:dataTable value=”#{filmController.filmTitles}” var=”item”
border=”0” cellpadding=”2” cellspacing=”0” > με την οποία
ουσιαστικά «συνδέουμε» την ιστοσελίδα index.xhtml (όταν
χρησιμοποιούμε JSF, καλό είναι να σώζουμε τις σελίδες μας
με επέκταση xhtml και όχι ως html) με την κλάση
FilmController. Η γραμμή αυτή είναι μία οδηγία προς τον
browser μας για το πού θα «βρει» την πληροφορία για να γε-
μίσει τον πίνακα που μόλις δηλώσαμε. Βλέπουμε, δηλαδή, ότι
ο πίνακάς μας θα «γεμίσει» με το περιεχόμενο του filmTitles,
το οποίο, αν θυμάστε από την κλάση FilmHelper, είναι μία λί-
στα από... films! (List<Film> filmList = null;). Πρόσβαση σε
κάθε αντικείμενο αυτής της λίστας αποκτούμε μέσω της με-
ταβλητής item (var=”item”), ο πίνακάς μας έχει μόνο μία στή-
λη (υπάρχει μόνο ένα tag <h:column>... </h:column>), το
header της οποίας (<f:facet name=”header”>) είναι Title
(<h:outputText value=”Title”/>) και σε κάθε γραμμή αυτού
του πίνακα βάζουμε τον τίτλο κάθε ταινίας της λίστας μας
(<h:outputText value=”#{item.title}”/>). Τόσο απλό! Με τον
παραπάνω κώδικα οι κλήσεις όλων των κατάλληλων μεθόδων
των αντίστοιχων αντικειμένων (π.χ., η κλήση της getFilmTitles()
στη FilmController) γίνονται αυτόματα. Υπάρχει μάλιστα η δυνα-
τότητα, μέσω του AJAX support που παρέχει το framework της
JSF, οι τίτλοι των ταινιών να ανανεώνονται αυτόματα κάθε φορά
που αυτοί αλλάζουν στη βάση δεδομένων! Βλέπουμε, λοιπόν,
την ουσιαστική ευκολία που μας παρέχει η JSF στο να κατα-
σκευάζουμε εύκολα και γρήγορα το UI της εφαρμογής μας.
Επίλογος
Η εφαρμογή που δημιουργήσαμε είναι, βέβαια, πολύ απλή
και δεν εκμεταλλεύεται όλη την πληροφορία που υπάρχει στη
βάση sakila. Μία πιο πλήρης εφαρμογή θα μπορούσε, για πα-
ράδειγμα, να έχει τη μορφή της εικόνας 6, όπου πέρα από τον
τίτλο κάθε ταινίας υπάρχει και μία σύντομη περιγραφή της, κα-
θώς και η δυνατότητα προβολής περισσότερων πληροφοριών
γι’ αυτή (μέσω του link View) και σελιδοποίησης (Next 10). Σκο-
πός, όμως, του άρθρου ήταν να δείξει τις βασικές δυνατότητες
των τεχνολογιών που προαναφέρθηκαν χωρίς να μπω σε λε-
πτομέρειες. Ελπίζω αυτό το lab να σας φάνηκε χρήσιμο και εν-
διαφέρον! Τον κώδικα όλης της εφαρμογής μπορείτε να τον
βρείτε στη διεύθυνση www.linuxinside.gr.
Υπάρχει μάλιστα η δυνατότητα, μέσω του AJAX
support που παρέχει το framework της JSF, οι
τίτλοι των ταινιών να ανανεώνονται αυτόματα
κάθε φορά που αυτοί αλλάζουν στη βάση
δεδομένων!
Από τη σελίδα glassfish.java.net κατεβάζετε την τελευταία
έκδοση (3.1.1) του Glassfish.
Στο http://goo.gl/huh3s μπορείτε να βρείτε τεκμηρίωση για το
Glassfish.
Σύνδεσμοι:
[1] NetBeans: http://goo.gl/8sNxR
[2] GlashFish: http://glassfish.java.net
[3] Ρύθμιση Hibernate: http://goo.gl/3q35f