TOTD #94: A simple Java Server Faces 2.0 + JPA 2.0 application - Getting Started with Java EE 6 using NetBeans 6.8 M1 & GlassFish v3
TOTD
#93
showed how to get started with Java EE 6
using NetBeans
6.8 M1 and
GlassFish v3 by
building a simple Servlet 3.0 + JPA 2.0 web
application. JPA 2.0 + Eclipselink was used for the database
connectivity
and Servlet 3.0 was used for displaying the results to the user. The
sample demonstrated how the two technologies can be mixed to create a
simple web application. But Servlets are meant for server-side
processing rather than displaying the results to end user. JavaServer
Faces 2 (another new specification in Java EE 6) is designed
to fulfill
that purpose.
This Tip
Of The Day (TOTD) shows how
to enhance the application created in TOTD #93 and use JSF 2 for
displaying the results.
- Right-click on the project, select "Properties", select
"Frameworks", click on "Add ..." as shown below:

Select "JavaServer Faces" and click on "OK". The following
configuration screen is shown:

Click on "OK" to complete the dialog. This generates a whole bunch of
files (7 to be accurate) in your project. Most of these files are
leftover from previous version of NetBeans and will be cleaned up. For
example, "faces-config.xml" is now optional and "forwardToJSF.jsp" is
redundant.
- Anyway, lets add a POJO class that will be our managed bean.
Right-click on "server" package and select "New", "Java Class ...",
give the name as "StateList". Change the class such that it looks like:
package server;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceUnit;
import states.States;
/**
* @author arungupta
*/
@ManagedBean
public class StateList {
@PersistenceUnit
EntityManagerFactory emf;
public List<States>
getStates() {
return
emf.createEntityManager().createNamedQuery("States.findAll").getResultList();
}
} |
Here are the main characterisitcs of this class:
- This is a POJO class with @ManagedBean annotation. This
annotation makes this class a managed
bean that can be used in the JSF pages. As no other
annotations or parameters are specified, this is a request-scoped
managed bean with the name "stateList" and lazily initialized. More
details about this annotation are available in the javadocs.
- The persistence unit created in TOTD
#93 is injected using @PersistenceUnit annotation.
- The POJO has one getter method that queries the database
and return the list of all the states.
- In the generated file "template-client.xhtml", change the
"head" template to:
and "body" template to:
<h:dataTable var="state" value="#{stateList.states}"
border="1">
<h:column><h:outputText
value="#{state.abbrev}"/></h:column>
<h:column><h:outputText
value="#{state.name}"/></h:column>
</h:dataTable>
|
This uses the standard JSF "dataTable", "column", and "outputText" tags
and uses the value
expression to fetch the values from the managed bean.
If the application is already running from
TOTD
#93, then
Deploy-on-Save
would have automatically deployed the entire application. Otherwise
right-click on the project and select Run (default shortcut "F6"). The
results can be seen at
"http://localhost:8080/HelloEclipseLink/forwardToJSF.jsp" or
"http://localhost:8080/HelloEclipseLink/faces/template-client.xhtml"
and looks like:
The updated directory structure looks like:
There were multiple files added by the JSF framework support in
NetBeans. But as I said earlier, they will be cleaned up before the
final release.
Also refer to other
Java EE 6
blog entries.
Please leave suggestions on other TOTD that
you'd like to see.
A complete archive of all the tips is available
here.
Technorati: totd
glassfish
v3 mysql javaee6 javaserverfaces
jpa2 netbeans
Posted
by Arun Gupta in General |

|

|

|

|

|

|
|