08.09.2012
JEE6 Tutorial - Part 7 - Daten aus Datenbank auslesen und auf des JSF-Seite anzeigen
In 7. Teil des Tutorials werden die in der Datenbank abgelegten URLs mittels einer Query
ausgelesen und über das EJB und das Backing Bean an die JSF-Seite weiterleitet und in einer dataTable
angezeigt.
Um das zu erreichen wird zuerst die Klasse UrlManagerBean
erweitert. Dort ergänzen wir eine Methode getUrls()
, die eine Query an den EntityManager
absendet und alles UrlManagerEntity
s ausliest. Aus diesen extrahieren wir die URLs und speichern die in einer Liste ab, die als return
-Wert zurückgegeben wird.
package org.hameister.urlmanager;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
import javax.inject.Named;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
/**
*
* @author Hameister
*/
@Stateless
@Named
public class UrlManagerBean {
@PersistenceContext
EntityManager em;
public void addUrl(UrlManagerEntity entity) {
System.out.println("Added");
em.persist(entity);
}
public List<String> getUrls() {
List<String> urls = new ArrayList<String>();
Query query = em.createQuery("SELECT url FROM UrlManagerEntity url");
List<UrlManagerEntity> resultList = query.getResultList();
for(UrlManagerEntity entity : resultList) {
urls.add(entity.getUrl());
}
return urls;
}
}
Als nächstes wird die Klasse UrlManagerPM
um die Methode getUrls()
erweitert. Die Methode leitet die Anfrage einfach weiter an das Bean, welches die Liste mit URLs liefert.
package org.hameister.urlmanager;
import java.util.List;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
/**
*
* @author Hameister
*/
@Named
@RequestScoped
public class UrlManagerPM {
private UrlManagerEntity entity = new UrlManagerEntity();
@EJB
UrlManagerBean bean;
public UrlManagerEntity getEntity() {
return entity;
}
public void setEntity(UrlManagerEntity entity) {
this.entity = entity;
}
public void store() {
System.out.println("Stored");
bean.addUrl(entity);
}
public List getUrls() {
return bean.getUrls();
}
}
Was jetzt noch fehlt, ist die Anzeige der URLs auf der JSF-Seite. Deshalb wird die Datei index.xhtml
um folgende Zeilen erweitert:
<?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">
<h:head>
<title>URLManager</title>
</h:head>
<h:body>
<h:form>
Bitte URL eintragen:
<h:inputText value="#{urlManagerPM.entity.url}"/>
<h:commandButton value="Add" action="#{urlManagerPM.store()}" />
</h:form>
<h:dataTable value="#{urlManagerPM.urls}" var="url">
<h:column>
#{url}
</h:column>
</h:dataTable>
</h:body>
</html>
Die Zeilen 15-19 sorgen dafür, dass die URLs beim Presentation Model abgefragt und in einer dataTable
angezeigt werden.
Im letzten Teil des Tutorials gibt es eine kleine Zusammenfassung und ein Fazit zum Thema JEE6. Zusammenfassung und Fazit.