Author: ochikvina
Date: 2008-05-29 11:42:01 -0400 (Thu, 29 May 2008)
New Revision: 8445
Modified:
trunk/documentation/guides/GettingStartedGuide/en/modules/first_seam.xml
Log:
http://jira.jboss.com/jira/browse/JBDS-134 - creating FAq section (commented because of
the only question)
Modified: trunk/documentation/guides/GettingStartedGuide/en/modules/first_seam.xml
===================================================================
--- trunk/documentation/guides/GettingStartedGuide/en/modules/first_seam.xml 2008-05-29
15:21:06 UTC (rev 8444)
+++ trunk/documentation/guides/GettingStartedGuide/en/modules/first_seam.xml 2008-05-29
15:42:01 UTC (rev 8445)
@@ -10,326 +10,373 @@
</chapterinfo>
<title>Write Your First Project with JBoss Developer Studio</title>
-
- <para>This chapter is a set of hands-on labs. You get step-by-step information
about how the JBoss Developer Studio can be used during the development
process.</para>
-<section id="create_seam_application">
- <title>Create a Seam Application</title>
-
- <para>In this section you get to know how to create a Seam project in JBDS, how
to start the server and what a structure your project has after creating.</para>
-
- <section id="start_dev_db">
- <title>Start Development Database</title>
-
- <para>Before opening the JBoss Developer studio you need to <ulink
url="../../../database.zip">download</ulink> and start a Workshop
Database.</para>
- <para>To start the database just run
<property>./runDBServer.sh</property> or
<property>runDBServer.bat</property> from the database
directory.</para>
- <para>The end result should be a console window that looks like:</para>
-
- <figure>
- <title>Starting DataBase</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/first_seam/first_seam1.png"/>
- </imageobject>
- </mediaobject>
- </figure>
-
- </section>
+ <para>This chapter is a set of hands-on labs. You get step-by-step information
about how the JBoss
+ Developer Studio can be used during the development process.</para>
- <section id="create_deploy_seam">
- <title>Create and deploy Seam Web Project</title>
-
- <para>Minimize the terminal window and run the JBoss Developer Studio from
Applications Menu or from the desktop icon.</para>
- <para>First of all you get the Workspace Launcher. Change the default workspace
location if it's needed. Click on <property>Ok</property>.
- </para>
-
- <figure>
- <title>Workspace Launcher Dialog</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/first_seam/first_seam2.png"/>
- </imageobject>
- </mediaobject>
- </figure>
-
- <para>After startup, you see the welcome page. You could read how to work with
welcome pages in <link linkend="Welcome">previous</link> chapter.
- Now select <property>Create New...</property> icon and then press on
<property>Create Seam Project</property> link.</para>
-
- <para>The New Seam Project wizard is started. You need to enter a name (e.g.,
"workshop") and a location directory for your new project.
- The wizard has an option for selecting the actual Server (and not just WTP runtime)
that will be used for the project.
- This allow the wizard to correctly identify where the needed datasource and driver
libraries need to go. All settings are already specified.
- Click on <property>Next</property>.</para>
-
- <figure>
- <title>New Seam Project Wizard</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/first_seam/first_seam3.png"/>
- </imageobject>
- </mediaobject>
- </figure>
-
- <para>Next, you will be asked to select the "features" you want to
use in your project. This allows JBoss Developer Studio to setup the
- appropriate tooling for your project. Since JBoss Seam integrates all popular Java
EE frameworks, you can select any combination of
- technologies from the list. Here, for this project, we will select Dynamic Web
Module, Java, JavaServer Faces (JSF), and Seam Facet for
- a typical database-driven web application. The default project facets should
suffice, click on <property>Next</property>.</para>
-
- <figure id="ProjectFacetsSpecifyingScreen">
- <title>Project Facets Specifying</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/first_seam/first_seam4.png"/>
- </imageobject>
- </mediaobject>
- </figure>
-
- <para>In the <link
linkend="ProjectFacetsSpecifyingScreen">Project Facets
Specifying</link> form you can also bring up server runtimes panel by clicking
<property>Show Runtimes</property> in the bottom right corner.
- This panel shows available server runtimes. Then this button will be changed into
<property>Hide Runtimes</property> one.</para>
- <para>Click <property>Next</property> to proceed
further.</para>
-
- <figure>
- <title>Runtimes Selecting</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/first_seam/first_seam5.png"/>
- </imageobject>
- </mediaobject>
- </figure>
-
- <para>A dynamic web application contains both web pages and Java code. The
wizard will ask you where you want to put those files.
- You can just leave the default values or choose another folder.</para>
-
- <figure>
- <title>Web Module Settings</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/first_seam/first_seam6.png"/>
- </imageobject>
- </mediaobject>
- </figure>
-
- <para>On the next form, you will be able to select where those library JARs
come from. The easiest is just to select the JARs provided by
- the JBoss AS runtime associated with this project. That is why it is important to
chose the right JBoss AS 4.2 runtime in the project setup window.</para>
- <itemizedlist>
- <listitem>
- <para>Check <emphasis><property>Server Supplied JSF
Implementation</property>.
- </emphasis>We will use <ulink
url="&seamlink;#addJSFCapab">JSF implementation</ulink> that comes
with JBoss server</para>
- </listitem>
- <listitem>
- <para>Click
<emphasis><property>Next</property></emphasis></para>
- </listitem>
- </itemizedlist>
-
- <figure>
- <title>JSF Capabilities Adding</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/first_seam/first_seam7.png"/>
- </imageobject>
- </mediaobject>
- </figure>
-
- <para>Next wizard step needs more settings that previous. Let's start with
<property>General</property> section.</para>
- <para>Leave the default Seam runtime and check a WAR deployment.</para>
-
- <figure>
- <title>Seam Facet Setting</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/first_seam/first_seam8.png"/>
- </imageobject>
- </mediaobject>
- </figure>
-
- <para>Next <property>Database</property> section is a little
tricky. The <property>Connection Profile</property> needs to be edited so that
the
- new project works properly with the external HSQLDB server. By default the project
wizard tries to use the JBoss embedded
- HSQLDB, but the tutorial uses an external database to replicate a more real world
development scenario.
- Click on <property>Edit</property> to modify the Connection
Profile.</para>
-
- <figure>
- <title>DataBase Setting</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/first_seam/first_seam8_1.png"/>
- </imageobject>
- </mediaobject>
- </figure>
-
- <para>Select <property>JDBC Connection Properties</property>. Make
sure the URL is set to
<emphasis><property>jdbc:hsqldb:hsql://localhost:1701</property></emphasis></para>
-
- <figure>
- <title>JDBC Connection Properties</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/first_seam/first_seam9.png"/>
- </imageobject>
- </mediaobject>
- </figure>
-
- <para>Try click on <property>Test Connection</property> button. It
probably won’t work. This happens if the hsql jdbc driver is not exactly the same. This
can
- be worked around by modifying the HSQLDB database driver settings. To modify the
settings, click the <property>“...”</property> next to the drop-down
box.</para>
-
- <para>The proper Driver JAR File should be listed under <property>Driver
File(s)</property>. Select the hsqldb.jar file found in the
- database/lib directory and click on
<property>Ok</property>.</para>
-
- <figure>
- <title>Driver Details</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/first_seam/first_seam10.png"/>
- </imageobject>
- </mediaobject>
- </figure>
-
- <para>Select <property>Hypersonic DB</property> and click on
<property>Ok</property>. Again, this only happens if the selected hsqldb.jar
is different
- from the running database.</para>
-
- <figure>
- <title>Hypersonic DB Selecting</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/first_seam/first_seam11.png"/>
- </imageobject>
- </mediaobject>
- </figure>
-
- <para>Now, the <property>Test Connection</property> should succeed.
After testing the connection, click on Ok.</para>
-
- <figure>
- <title>Connection Testing</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/first_seam/first_seam12.png"/>
- </imageobject>
- </mediaobject>
- </figure>
-
- <para>You can leave the <property>Code Generation</property> section
as is. It refers to Java packages in which the generated code will be
placed.</para>
-
- <figure>
- <title>Code Generation Setting</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/first_seam/first_seam13.png"/>
- </imageobject>
- </mediaobject>
- </figure>
-
- <para>Click on <property>Finish</property> button. Now, there
should be a new Seam project called “workshop” listed in Package Explorer
view.</para>
-
- <figure>
- <title>"worskhop" Project in the Package
Explorer</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/first_seam/first_seam14.png"/>
- </imageobject>
- </mediaobject>
- </figure>
- </section>
-
+ <section id="create_seam_application">
+ <title>Create a Seam Application</title>
+
+ <para>In this section you get to know how to create a Seam project in JBDS, how
to start the
+ server and what a structure your project has after creating.</para>
+
+ <section id="start_dev_db">
+ <title>Start Development Database</title>
+
+ <para>Before opening the JBoss Developer studio you need to <ulink
url="../../../database.zip"
+ >download</ulink> and start a Workshop Database.</para>
+ <para>To start the database just run
<property>./runDBServer.sh</property> or
+ <property>runDBServer.bat</property> from the database
directory.</para>
+ <para>The end result should be a console window that looks
like:</para>
+
+ <figure>
+ <title>Starting DataBase</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/first_seam/first_seam1.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ </section>
+
+ <section id="create_deploy_seam">
+ <title>Create and deploy Seam Web Project</title>
+
+ <para>Minimize the terminal window and run the JBoss Developer Studio from
Applications Menu
+ or from the desktop icon.</para>
+ <para>First of all you get the Workspace Launcher. Change the default
workspace location if
+ it's needed. Click on <property>Ok</property>. </para>
+
+ <figure>
+ <title>Workspace Launcher Dialog</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/first_seam/first_seam2.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>After startup, you see the welcome page. You could read how to work
with welcome pages
+ in <link linkend="Welcome">previous</link> chapter. Now
select <property>Create
+ New...</property> icon and then press on <property>Create Seam
Project</property> link.</para>
+
+ <para>The New Seam Project wizard is started. You need to enter a name
(e.g.,
+ "workshop") and a location directory for your new project. The
wizard has
+ an option for selecting the actual Server (and not just WTP runtime) that will be
used for
+ the project. This allow the wizard to correctly identify where the needed
datasource and
+ driver libraries need to go. All settings are already specified. Click on
+ <property>Next</property>.</para>
+
+ <figure>
+ <title>New Seam Project Wizard</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/first_seam/first_seam3.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>Next, you will be asked to select the "features" you want to
use in your project. This
+ allows JBoss Developer Studio to setup the appropriate tooling for your project.
Since JBoss
+ Seam integrates all popular Java EE frameworks, you can select any combination
of
+ technologies from the list. Here, for this project, we will select Dynamic Web
Module, Java,
+ JavaServer Faces (JSF), and Seam Facet for a typical database-driven web
application. The
+ default project facets should suffice, click on
<property>Next</property>.</para>
+
+ <figure id="ProjectFacetsSpecifyingScreen">
+ <title>Project Facets Specifying</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/first_seam/first_seam4.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>In the <link
linkend="ProjectFacetsSpecifyingScreen">Project Facets
Specifying</link>
+ form you can also bring up server runtimes panel by clicking
<property>Show
+ Runtimes</property> in the bottom right corner. This panel shows available
server runtimes.
+ Then this button will be changed into <property>Hide
Runtimes</property> one.</para>
+ <para>Click <property>Next</property> to proceed
further.</para>
+
+ <figure>
+ <title>Runtimes Selecting</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/first_seam/first_seam5.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>A dynamic web application contains both web pages and Java code. The
wizard will ask you
+ where you want to put those files. You can just leave the default values or
choose another
+ folder.</para>
+
+ <figure>
+ <title>Web Module Settings</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/first_seam/first_seam6.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>On the next form, you will be able to select where those library JARs
come from. The
+ easiest is just to select the JARs provided by the JBoss AS runtime associated
with this
+ project. That is why it is important to chose the right JBoss AS 4.2 runtime in
the project
+ setup window.</para>
+ <itemizedlist>
+ <listitem>
+ <para>Check <emphasis><property>Server Supplied JSF
Implementation</property>.
+ </emphasis>We will use <ulink
url="&seamlink;#addJSFCapab">JSF
+ implementation</ulink> that comes with JBoss server</para>
+ </listitem>
+ <listitem>
+ <para>Click <emphasis>
+ <property>Next</property>
+ </emphasis></para>
+ </listitem>
+ </itemizedlist>
+
+ <figure>
+ <title>JSF Capabilities Adding</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/first_seam/first_seam7.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>Next wizard step needs more settings that previous. Let's start
with
+ <property>General</property> section.</para>
+ <para>Leave the default Seam runtime and check a WAR
deployment.</para>
+
+ <figure>
+ <title>Seam Facet Setting</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/first_seam/first_seam8.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>Next <property>Database</property> section is a little
tricky. The <property>Connection
+ Profile</property> needs to be edited so that the new project works
properly with the
+ external HSQLDB server. By default the project wizard tries to use the JBoss
embedded
+ HSQLDB, but the tutorial uses an external database to replicate a more real
world
+ development scenario. Click on <property>Edit</property> to modify
the Connection Profile.</para>
+
+ <figure>
+ <title>DataBase Setting</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/first_seam/first_seam8_1.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>Select <property>JDBC Connection Properties</property>.
Make sure the URL is set to <emphasis>
+ <property>jdbc:hsqldb:hsql://localhost:1701</property>
+ </emphasis></para>
+
+ <figure>
+ <title>JDBC Connection Properties</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/first_seam/first_seam9.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>Try click on <property>Test Connection</property> button.
It probably won’t work. This
+ happens if the hsql jdbc driver is not exactly the same. This can be worked
around by
+ modifying the HSQLDB database driver settings. To modify the settings, click the
+ <property>“...”</property> next to the drop-down box.</para>
+
+ <para>The proper Driver JAR File should be listed under
<property>Driver File(s)</property>.
+ Select the hsqldb.jar file found in the database/lib directory and click on
+ <property>Ok</property>.</para>
+
+ <figure>
+ <title>Driver Details</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/first_seam/first_seam10.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>Select <property>Hypersonic DB</property> and click on
<property>Ok</property>. Again,
+ this only happens if the selected hsqldb.jar is different from the running
database.</para>
+
+ <figure>
+ <title>Hypersonic DB Selecting</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/first_seam/first_seam11.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>Now, the <property>Test Connection</property> should
succeed. After testing the
+ connection, click on Ok.</para>
+
+ <figure>
+ <title>Connection Testing</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/first_seam/first_seam12.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>You can leave the <property>Code Generation</property>
section as is. It refers to Java
+ packages in which the generated code will be placed.</para>
+
+ <figure>
+ <title>Code Generation Setting</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/first_seam/first_seam13.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>Click on <property>Finish</property> button. Now, there
should be a new Seam project
+ called “workshop” listed in Package Explorer view.</para>
+
+ <figure>
+ <title>"worskhop" Project in the Package
Explorer</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/first_seam/first_seam14.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ </section>
+
<section id="start_JBossAS">
<title>Start JBoss Application Server</title>
-
- <para>The complete information on how to manage JBoss AS from JBoss Developer
Studio you can read in a <link linkend="manage">corresponding
chapter</link>.</para>
- <para>Now you just need to start the server by clicking on green
circle/triangle icon in the JBoss Server View.</para>
-
- <figure>
- <title>Starting the Server</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/first_seam/first_seam15.png"/>
- </imageobject>
- </mediaobject>
- </figure>
-
- <para>Then run the project by selecting the project and use
<emphasis><property>Run As... > Run on
Server</property>.</emphasis></para>
-
+
+ <para>The complete information on how to manage JBoss AS from JBoss Developer
Studio you can
+ read in a <link linkend="manage">corresponding
chapter</link>.</para>
+ <para>Now you just need to start the server by clicking on green
circle/triangle icon in the
+ JBoss Server View.</para>
+
+ <figure>
+ <title>Starting the Server</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/first_seam/first_seam15.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>Then run the project by selecting the project and use
<emphasis><property>Run As... >
+ Run on Server</property>.</emphasis></para>
+
<note>
<title>Note:</title>
- <para>If the project does not show up, then you can use a normal browser
and use
<emphasis><property>http://localhost:8080/workshop/home.seam</property></emphasis>
as the
- url.</para>
- </note>
-
- <para>Your project looks like this:</para>
-
- <figure>
- <title>"workshop" Project Started</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/first_seam/first_seam16.png"/>
- </imageobject>
- </mediaobject>
- </figure>
-
+ <para>If the project does not show up, then you can use a normal browser
and use <emphasis>
+ <property>http://localhost:8080/workshop/home.seam</property>
+ </emphasis> as the url.</para>
+ </note>
+
+ <para>Your project looks like this:</para>
+
+ <figure>
+ <title>"workshop" Project Started</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/first_seam/first_seam16.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+
</section>
-
- <section id="workshop_code_overview">
- <title>Workshop Project Code Overview</title>
-
- <para>Now let's examine the project and its structure. Go back to the
Package Explorer view in JBoss Developer Studio.</para>
-
- <para>It seems like it's not much for project but this shell application
contains a login screen with default login logic, a
- menu template that can be further modified, and other layout
templates.</para>
-
- <figure>
- <title>Project Structure</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/first_seam/first_seam17.png"/>
- </imageobject>
- </mediaobject>
- </figure>
-
- <para>It’s important to note that the business logic will reside in the
<emphasis><property>src/action</property></emphasis> folder, by
default. And, the
- package naming conventions that were used in Seam project setup wizard could have
been changed to
- something different from
<emphasis><property>org.domain.workshop.session</property></emphasis>.
Also, notice that there is a default <property>Authenticator.
- java</property> file. This is where custom security logic can be added.
Seam has a nice declarative security
- model that we will explore in a bit more detail later on. The
<emphasis><property>src/model</property></emphasis> folder will
store the project’s
- JPA entity beans. The view tier of the application is also important. Seam uses
facelets and there is a built-in
- facelets GUI editor that has some nice WYSIWYG and component drag/drop
functionality. Try this out by opening <property>home.xhtml</property> from
- <property>WebContent</property> folder.</para>
-
- <figure>
- <title>Facelets GUI Editor</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/first_seam/first_seam18.png"
scale="85"/>
- </imageobject>
- </mediaobject>
- </figure>
-
- <para>Notice that the templates reside in the
<emphasis><property>WebContent/layout</property></emphasis>
folder. There is a stylesheet in
- the
<emphasis><property>WebContent/stylesheet</property></emphasis>
folder. There is also a login and default error page. The Facelet editor will be explored
in
- more detail later in the lab.</para>
-
- <para>The project already has a datasource that was created per the Seam
project wizard database settings. And,
- obviously all of the Seam specific configuration files and JAR dependencies are
included and placed in
- the proper locations. On last noteworthy line item is related to the build script.
There isn’t a build script
- because the Eclipse WTP(Web Tools Project) plugin is used to publish web
application changes. As you
- can see, JBoss Developer Studio is removing a great deal of complexity from the
enterprise Java project
- setup/deployment process. The end result is a developer that is writing code, not
spending days/weeks trying
- to figure out how to get a decent development environment and project build
process.</para>
-
+
+ <section id="workshop_code_overview">
+ <title>Workshop Project Code Overview</title>
+
+ <para>Now let's examine the project and its structure. Go back to the
Package Explorer view in
+ JBoss Developer Studio.</para>
+
+ <para>It seems like it's not much for project but this shell application
contains a login
+ screen with default login logic, a menu template that can be further modified,
and other
+ layout templates.</para>
+
+ <figure>
+ <title>Project Structure</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/first_seam/first_seam17.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>It’s important to note that the business logic will reside in the
<emphasis>
+ <property>src/action</property>
+ </emphasis> folder, by default. And, the package naming conventions that
were used in Seam
+ project setup wizard could have been changed to something different from
<emphasis>
+ <property>org.domain.workshop.session</property>
+ </emphasis>. Also, notice that there is a default
<property>Authenticator. java</property>
+ file. This is where custom security logic can be added. Seam has a nice
declarative security
+ model that we will explore in a bit more detail later on. The <emphasis>
+ <property>src/model</property>
+ </emphasis> folder will store the project’s JPA entity beans. The view tier
of the
+ application is also important. Seam uses facelets and there is a built-in
facelets GUI
+ editor that has some nice WYSIWYG and component drag/drop functionality. Try this
out by
+ opening <property>home.xhtml</property> from
<property>WebContent</property> folder.</para>
+
+ <figure>
+ <title>Facelets GUI Editor</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/first_seam/first_seam18.png"
scale="85"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>Notice that the templates reside in the <emphasis>
+ <property>WebContent/layout</property>
+ </emphasis> folder. There is a stylesheet in the <emphasis>
+ <property>WebContent/stylesheet</property>
+ </emphasis> folder. There is also a login and default error page. The
Facelet editor will be
+ explored in more detail later in the lab.</para>
+
+ <para>The project already has a datasource that was created per the Seam
project wizard
+ database settings. And, obviously all of the Seam specific configuration files
and JAR
+ dependencies are included and placed in the proper locations. On last noteworthy
line item
+ is related to the build script. There isn’t a build script because the Eclipse
WTP(Web Tools
+ Project) plugin is used to publish web application changes. As you can see, JBoss
Developer
+ Studio is removing a great deal of complexity from the enterprise Java project
+ setup/deployment process. The end result is a developer that is writing code, not
spending
+ days/weeks trying to figure out how to get a decent development environment and
project
+ build process.</para>
+
</section>
-</section>
+ </section>
<section id="seam_action_dev">
<title>Seam Action Development</title>
-
- <para>Now, it’s time to write some code. The good news is that JBoss Developer
Studio can also help out in
- this respect. In this section, we will create a new Seam Action POJO and facelet
with some custom business
- logic and some GUI changes.</para>
-
+
+ <para>Now, it’s time to write some code. The good news is that JBoss Developer
Studio can also
+ help out in this respect. In this section, we will create a new Seam Action POJO
and facelet
+ with some custom business logic and some GUI changes.</para>
+
<section id="create_seam_action">
<title>Create a New Seam Action</title>
-
- <para>Go to main menu bar and click on <emphasis><property>File
> New > New Seam Action</property></emphasis> to start the New Seam
Action wizard.</para>
-
- <para>Specify a <property>Seam component name</property> (e.g.,
"myAction"). The other properties will be auto-completed for
- you so there is no need to change them. Click on
<property>Finish</property>.</para>
-
+
+ <para>Go to main menu bar and click on <emphasis>
+ <property>File > New > New Seam Action</property>
+ </emphasis> to start the New Seam Action wizard.</para>
+
+ <para>Specify a <property>Seam component name</property> (e.g.,
"myAction").
+ The other properties will be auto-completed for you so there is no need to change
them.
+ Click on <property>Finish</property>.</para>
+
<figure>
<title>New Seam Action Wizard</title>
<mediaobject>
@@ -338,25 +385,27 @@
</imageobject>
</mediaobject>
</figure>
-
- <para>Now, open the <property>MyAction.java</property> file and
replace the "myAction" method with this logic:</para>
-
+
+ <para>Now, open the <property>MyAction.java</property> file and
replace the
+ "myAction" method with this logic:</para>
+
<programlisting><![CDATA[public void myAction() {
Calendar cal = Calendar.getInstance();
log.info("myAction.myAction() action called");
facesMessages.add("MyAction Executed on:" + cal.getTime());
}]]></programlisting>
-
- <para>You also need to import the
<property>java.util.Calendar</property> class by clicking
<emphasis><property>CTRL + Shift +
O</property>.</emphasis></para>
-
+
+ <para>You also need to import the
<property>java.util.Calendar</property> class by clicking
+ <emphasis><property>CTRL + Shift +
O</property>.</emphasis></para>
+
</section>
-
+
<section id="test_seam_action">
<title>Test Seam Action</title>
-
- <para>The new action can be tested by browsing the workshop-test project.
JBoss Developer Studio has already
- created a TestNG test case for you.</para>
-
+
+ <para>The new action can be tested by browsing the workshop-test project.
JBoss Developer
+ Studio has already created a TestNG test case for you.</para>
+
<figure>
<title>"workshop-test" Project</title>
<mediaobject>
@@ -365,11 +414,13 @@
</imageobject>
</mediaobject>
</figure>
-
- <para>The test case simulates a Seam component/method execution for the
<property>MyAction.myAction()</property> logic.</para>
- <para>To run the test case, right click on
<property>MyActionTest.xml</property> and click
<emphasis><property>Run As > TestNG Suite</property></emphasis>
or use the <property>Run
- As...</property> toolbar shortcut as shown below.</para>
-
+
+ <para>The test case simulates a Seam component/method execution for the
+ <property>MyAction.myAction()</property> logic.</para>
+ <para>To run the test case, right click on
<property>MyActionTest.xml</property> and click <emphasis>
+ <property>Run As > TestNG Suite</property>
+ </emphasis> or use the <property>Run As...</property> toolbar
shortcut as shown below.</para>
+
<figure>
<title>TestNG Running</title>
<mediaobject>
@@ -378,9 +429,9 @@
</imageobject>
</mediaobject>
</figure>
-
+
<para>With any luck, the test case will pass. Look at the TestNG
view.</para>
-
+
<figure>
<title>TestNG Results</title>
<mediaobject>
@@ -389,10 +440,15 @@
</imageobject>
</mediaobject>
</figure>
-
- <para>Now, it’s safe to test the new Seam Action in a web browser. The
fastest way to do that is to right click on
<property>myAction.xhtml</property> and use
<emphasis><property>Run As... > Run On
Server</property></emphasis> which will
- show the appropriate url in the browser. Alternatively you can manually enter
<emphasis><property>http://localhost/workshop/myAction.seam</property></emphasis>
into a browser.</para>
-
+
+ <para>Now, it’s safe to test the new Seam Action in a web browser. The
fastest way to do that
+ is to right click on <property>myAction.xhtml</property> and use
<emphasis>
+ <property>Run As... > Run On Server</property>
+ </emphasis> which will show the appropriate url in the browser.
Alternatively you can
+ manually enter <emphasis>
+ <property>http://localhost/workshop/myAction.seam</property>
+ </emphasis> into a browser.</para>
+
<figure>
<title>Seam Action in a Web Browser</title>
<mediaobject>
@@ -401,17 +457,21 @@
</imageobject>
</mediaobject>
</figure>
-
+
</section>
-
+
<section id="modify_seam_action">
<title>Modify Seam Action User Interface</title>
-
- <para>Browse to
<emphasis><property>http://localhost:8080/workshop/myAction.seam</property></emphasis>
and click on <property>myAction</property>. This executes the
- “myAction” method. This looks pretty good, but we could make this page look a
little better.</para>
-
- <para>Open
<emphasis><property>WebContent/myAction.xhtml</property></emphasis>
in JBoss Developer Studio to use the nice facelets editor.</para>
-
+
+ <para>Browse to <emphasis>
+ <property>http://localhost:8080/workshop/myAction.seam</property>
+ </emphasis> and click on <property>myAction</property>. This
executes the “myAction” method.
+ This looks pretty good, but we could make this page look a little
better.</para>
+
+ <para>Open <emphasis>
+ <property>WebContent/myAction.xhtml</property>
+ </emphasis> in JBoss Developer Studio to use the nice facelets
editor.</para>
+
<figure>
<title>Open Seam Action with Editor </title>
<mediaobject>
@@ -420,9 +480,10 @@
</imageobject>
</mediaobject>
</figure>
-
- <para>Right click on the "myAction!" button in the visual
part of editor and select <property><h:commandButton>
Attributes</property>.</para>
-
+
+ <para>Right click on the "myAction!" button in the visual
part of editor and
+ select <property><h:commandButton>
Attributes</property>.</para>
+
<figure>
<title>Seam Action Editing</title>
<mediaobject>
@@ -431,10 +492,12 @@
</imageobject>
</mediaobject>
</figure>
-
- <para>Change the <property>value</property> of the button to
something different. If desired, you can change any other text on the
- page. Then, type <emphasis><property>CTRL +
S</property></emphasis> to save the facelet.</para>
-
+
+ <para>Change the <property>value</property> of the button to
something different. If desired,
+ you can change any other text on the page. Then, type <emphasis>
+ <property>CTRL + S</property>
+ </emphasis> to save the facelet.</para>
+
<figure>
<title>Attributes Dialog</title>
<mediaobject>
@@ -443,11 +506,14 @@
</imageobject>
</mediaobject>
</figure>
-
- <para>Refresh
<emphasis><property>http://localhost:8080/workshop/myAction.seam</property></emphasis>
and now you should see your changes.</para>
-
- <para>Notice that you did not have to publish the application. JBoss
Developer Studio auto-published it for you.</para>
-
+
+ <para>Refresh <emphasis>
+ <property>http://localhost:8080/workshop/myAction.seam</property>
+ </emphasis> and now you should see your changes.</para>
+
+ <para>Notice that you did not have to publish the application. JBoss
Developer Studio
+ auto-published it for you.</para>
+
<figure>
<title>Seam Action Is Modified</title>
<mediaobject>
@@ -456,25 +522,27 @@
</imageobject>
</mediaobject>
</figure>
-
+
</section>
-
-
+
+
</section>
-
+
<section id="declarative_security">
<title>Declarative Security</title>
-
- <para>In this section you will see how it’s easy to secure the facelets and
facelet components in Seam. Let’s go ahead and secure the action button,
- then we will secure the entire page.</para>
-
+
+ <para>In this section you will see how it’s easy to secure the facelets and
facelet components
+ in Seam. Let’s go ahead and secure the action button, then we will secure the
entire page.</para>
+
<section id="edit_login">
<title>Edit Login Authentication Logic</title>
-
- <para>There is a class called
<property>Authenticator.java</property>. The login page will execute
- the <property>Authenticator.authenticate()</property> method by
default, so we’ll start by adding some custom login logic.</para>
- <para>Open <property>Authenticator.java</property> in JBoss
Developer Studio and replace the <property>authenticate()</property> method
with this code:</para>
-
+
+ <para>There is a class called
<property>Authenticator.java</property>. The login page will
+ execute the <property>Authenticator.authenticate()</property> method
by default, so we’ll
+ start by adding some custom login logic.</para>
+ <para>Open <property>Authenticator.java</property> in JBoss
Developer Studio and replace the
+ <property>authenticate()</property> method with this
code:</para>
+
<programlisting><![CDATA[public boolean authenticate() {
if (identity.getUsername().equals("admin")
&& identity.getPassword().equals("password")) {
@@ -484,21 +552,23 @@
else
return true;
}]]></programlisting>
-
+
</section>
<section id="secure_seam_page">
<title>Secure Seam Page Component</title>
-
+
<para>Open <property>myAction.xhtml</property> and add a new
secured command button:</para>
<programlisting><![CDATA[<h:commandButton
id="myActionSecured"
value="Secured Action Button"
action="#{myAction.myAction}"
rendered="#{s:hasRole('admin')}"/>]]></programlisting>
-
- <para>Refresh
<emphasis><property>http://localhost:8080/workshop/myAction.seam</property></emphasis>
If you are not logged in you will only see one
- button. If you are logged in, there will be two buttons.</para>
-
-
+
+ <para>Refresh <emphasis>
+ <property>http://localhost:8080/workshop/myAction.seam</property>
+ </emphasis> If you are not logged in you will only see one button. If you
are logged in,
+ there will be two buttons.</para>
+
+
<figure>
<title>One Button on a Page</title>
<mediaobject>
@@ -507,9 +577,10 @@
</imageobject>
</mediaobject>
</figure>
-
- <para>The secured button is not visible because the user isn’t logged in as
<property>"admin"</property>.</para>
-
+
+ <para>The secured button is not visible because the user isn’t logged in as
+ <property>"admin"</property>.</para>
+
<figure>
<title>Secured Button is Visible</title>
<mediaobject>
@@ -518,17 +589,19 @@
</imageobject>
</mediaobject>
</figure>
-
- <para>The user is logged in as
<property>"admin"</property>. Securing components is easy
but securing pages is pretty simple as
- well. </para>
- <para>Open
<emphasis><property>WebContent/WEB-INF/pages.xml</property></emphasis>.
Then add this markup directly underneath the
- <pages> element:</para>
-
+
+ <para>The user is logged in as
<property>"admin"</property>. Securing
+ components is easy but securing pages is pretty simple as well. </para>
+ <para>Open <emphasis>
+ <property>WebContent/WEB-INF/pages.xml</property>
+ </emphasis>. Then add this markup directly underneath the
<pages> element:</para>
+
<programlisting><![CDATA[<page view-id="/myAction.xhtml"
login-required="true"/>]]></programlisting>
-
- <para>Refresh
<emphasis><property>http://localhost:8080/workshop/myAction.seam</property></emphasis>
If you are not logged in you will get bounced
- back to the login page.</para>
-
+
+ <para>Refresh <emphasis>
+ <property>http://localhost:8080/workshop/myAction.seam</property>
+ </emphasis> If you are not logged in you will get bounced back to the login
page.</para>
+
<figure>
<title>Login Page</title>
<mediaobject>
@@ -537,32 +610,36 @@
</imageobject>
</mediaobject>
</figure>
-
- <para>Thus, if you enter login credentials for the
<property>"admin"</property> user, you will be re-directed
to the secured page and
- secured component. If you enter different login credentials, page access will be
granted, but the secured component will not be
- displayed.</para>
-
- <para>Congratulations! You have secured your new action both at the facelet
component and page level. You
- also added custom authentication logic to the login action.</para>
-
- </section>
-
+
+ <para>Thus, if you enter login credentials for the
+ <property>"admin"</property> user, you will be
re-directed to the secured
+ page and secured component. If you enter different login credentials, page access
will be
+ granted, but the secured component will not be displayed.</para>
+
+ <para>Congratulations! You have secured your new action both at the facelet
component and page
+ level. You also added custom authentication logic to the login
action.</para>
+
+ </section>
+
</section>
-
+
<section id="browsing_workshop_db">
<title>Browsing Workshop Database</title>
-
- <para>In this section you get to know how to use the workshop database that was
started at the beginning of the lab.</para>
-
+
+ <para>In this section you get to know how to use the workshop database that was
started at the
+ beginning of the lab.</para>
+
<section id="database_connectivity">
<title>Database Connectivity Setup</title>
-
+
<para>The workshop data can be browsed inside of JBoss Developer
Studio.</para>
- <para>To open the Data Source Explorer, click on
<emphasis><property>Window > Open Perspective > Other > Database
Development</property>.</emphasis></para>
- <para>In the Data Source Explorer, expand a
<property>Databases</property> node and select a
<property>Default</property> database.
- Right click on it, select <property>Connect</property> from the
context menu.</para>
-
+ <para>To open the Data Source Explorer, click on
<emphasis><property>Window > Open Perspective
+ > Other > Database
Development</property>.</emphasis></para>
+ <para>In the Data Source Explorer, expand a
<property>Databases</property> node and select a
+ <property>Default</property> database. Right click on it, select
+ <property>Connect</property> from the context menu.</para>
+
<figure>
<title>Data Source Explorer</title>
<mediaobject>
@@ -571,14 +648,14 @@
</imageobject>
</mediaobject>
</figure>
-
+
</section>
-
+
<section id="browsing_workshop_db2">
<title>Browse Workshop Database</title>
-
+
<para>Then in the current view, drill down to the
<property>CUSTOMERS</property> table.</para>
-
+
<figure>
<title>"CUSTOMERS" Table</title>
<mediaobject>
@@ -587,13 +664,16 @@
</imageobject>
</mediaobject>
</figure>
-
- <para>Right click on <property>CUSTOMERS</property>, select
<emphasis><property>Data > Sample
Contents</property></emphasis> to view the data in the table.</para>
-
- <para>There should be a SQL Results view on the workbench, but it could be
hidden.
- Click on the <property>"Result1"</property> tab in
the right side and you should see the data in the CUSTOMERS table.</para>
-
-
+
+ <para>Right click on <property>CUSTOMERS</property>, select
<emphasis>
+ <property>Data > Sample Contents</property>
+ </emphasis> to view the data in the table.</para>
+
+ <para>There should be a SQL Results view on the workbench, but it could be
hidden. Click on
+ the <property>"Result1"</property> tab in the right
side and you should
+ see the data in the CUSTOMERS table.</para>
+
+
<figure>
<title>SQL Results View</title>
<mediaobject>
@@ -602,31 +682,36 @@
</imageobject>
</mediaobject>
</figure>
-
+
<note>
<title>Note:</title>
- <para>If you can’t find the SQL Results view tab, click on
<emphasis><property>Window > Show View > Other > SQL Development >
SQL Results</property>.</emphasis></para>
+ <para>If you can’t find the SQL Results view tab, click on
<emphasis><property>Window > Show
+ View > Other > SQL Development > SQL
Results</property>.</emphasis></para>
</note>
-
- <para>Congratulations! You just connected to the workshop database and
queried the content using Database Explorer tools.</para>
-
+
+ <para>Congratulations! You just connected to the workshop database and
queried the content
+ using Database Explorer tools.</para>
+
</section>
-
+
</section>
<section id="db_programming">
<title>Database Programming</title>
-
- <para>Now, it’s time to reverse engineer the workshop database into a fully
functioning Seam CRUD(Create
- Read Update Delete) application.</para>
-
+
+ <para>Now, it’s time to reverse engineer the workshop database into a fully
functioning Seam
+ CRUD(Create Read Update Delete) application.</para>
+
<section id="reverse_engineer_crud">
<title>Reverse Engineer CRUD from a Running Database</title>
-
- <para>In JBoss Developer Studio, switch to Seam perspective and click on
<emphasis><property>File > New > Seam Generate
Entities</property>.</emphasis></para>
-
- <para>In the Seam Generate Entities wizard, select
"workshop" project using the <property>Browse</property>
button. There is no need to change something more, click on
<property>Finish</property>.</para>
-
+
+ <para>In JBoss Developer Studio, switch to Seam perspective and click on
+ <emphasis><property>File > New > Seam Generate
Entities</property>.</emphasis></para>
+
+ <para>In the Seam Generate Entities wizard, select
"workshop" project using
+ the <property>Browse</property> button. There is no need to change
something more, click on
+ <property>Finish</property>.</para>
+
<figure>
<title>Generate Seam Entities</title>
<mediaobject>
@@ -635,10 +720,11 @@
</imageobject>
</mediaobject>
</figure>
-
- <para>After running the Generate Entities action, you will see new
<emphasis><property>org.domain.workshop.entity</property></emphasis>
classes.
- These classes represent insert/update/delete/query logic.</para>
-
+
+ <para>After running the Generate Entities action, you will see new
<emphasis>
+ <property>org.domain.workshop.entity</property>
+ </emphasis> classes. These classes represent insert/update/delete/query
logic.</para>
+
<figure>
<title>org.domain.workshop.entity Classes</title>
<mediaobject>
@@ -647,16 +733,20 @@
</imageobject>
</mediaobject>
</figure>
-
- <para>There are also
<emphasis><property>org.domain.workshop.entity</property></emphasis>
package that contains the JPA classes. These are the entity
- beans that are mapped to database tables.</para>
-
- <para>Last, but not least, there are facelets for all of the CRUD screens.
The best way to get a feel for the generated
- code is to open a browser and play around with the application. Go to
<emphasis><property>http://localhost:8080/workshop</property></emphasis>
- and insert/update/delete/query a few records. There is quite a bit of AJAX in
this application, but
- which we will explore further later on in the lab. For now, take note of the page
tabs, required field logic
- and data table sorting in the list pages. </para>
-
+
+ <para>There are also <emphasis>
+ <property>org.domain.workshop.entity</property>
+ </emphasis> package that contains the JPA classes. These are the entity
beans that are
+ mapped to database tables.</para>
+
+ <para>Last, but not least, there are facelets for all of the CRUD screens.
The best way to get
+ a feel for the generated code is to open a browser and play around with the
application. Go
+ to <emphasis>
+ <property>http://localhost:8080/workshop</property>
+ </emphasis> and insert/update/delete/query a few records. There is quite a
bit of AJAX in
+ this application, but which we will explore further later on in the lab. For now,
take note
+ of the page tabs, required field logic and data table sorting in the list pages.
</para>
+
<figure>
<title>CustomersList.xhtml in the Editor</title>
<mediaobject>
@@ -665,19 +755,21 @@
</imageobject>
</mediaobject>
</figure>
-
- <para>Congratulations! You now have a fully functioning CRUD application
- that is already AJAX enabled.</para>
-
+
+ <para>Congratulations! You now have a fully functioning CRUD application that
is already AJAX
+ enabled.</para>
+
</section>
-
+
<section id="use_hibernate_tools">
<title>Use Hibernate Tools to Query Data via JPA</title>
-
- <para>Now, it’s time to write some JPA queries using the Hibernate Tools
perspective in JBoss Developer Studio.</para>
- <para>In the upper right corner of the workbench there is a small
<property>>></property>, click on it and choose
<property>Hibernate</property>.</para>
-
- <figure>
+
+ <para>Now, it’s time to write some JPA queries using the Hibernate Tools
perspective in JBoss
+ Developer Studio.</para>
+ <para>In the upper right corner of the workbench there is a small
<property>>></property>,
+ click on it and choose <property>Hibernate</property>.</para>
+
+ <figure>
<title>Hibernate Perspective</title>
<mediaobject>
<imageobject>
@@ -685,10 +777,11 @@
</imageobject>
</mediaobject>
</figure>
-
- <para>Look at the Hibernate Configurations view. In the
"workshop" project, drill down on the
- <property>Session Factory</property> and notice that the JPA
entities/attributes are listed in a nice tree view.</para>
-
+
+ <para>Look at the Hibernate Configurations view. In the
"workshop" project,
+ drill down on the <property>Session Factory</property> and notice
that the JPA
+ entities/attributes are listed in a nice tree view.</para>
+
<figure>
<title>Hibernate Configurations View</title>
<mediaobject>
@@ -697,12 +790,13 @@
</imageobject>
</mediaobject>
</figure>
-
- <para>Right click on the <property>Session Factory</property> and
select <property>HQL Editor</property>. This will open a JPA query scratch
pad
- window.</para>
-
- <para>Write your query and click on the "Hibernate Dynamic SQL
Preview" tab. You should see the SQL that will be executed if this JPA query is
run.</para>
-
+
+ <para>Right click on the <property>Session Factory</property> and
select <property>HQL
+ Editor</property>. This will open a JPA query scratch pad
window.</para>
+
+ <para>Write your query and click on the "Hibernate Dynamic SQL
Preview" tab.
+ You should see the SQL that will be executed if this JPA query is
run.</para>
+
<figure>
<title>JPA Query Editor</title>
<mediaobject>
@@ -711,13 +805,14 @@
</imageobject>
</mediaobject>
</figure>
-
+
<para>Run the query by clicking on the green run icon.</para>
-
- <para>The results are listed in the "Hibernate Query
Result" tab. There is a "Properties" tab in the workbench
- that can be used to see a specific JPA result. These results represent the JPA
objects because our
- query did not specify column names.</para>
-
+
+ <para>The results are listed in the "Hibernate Query
Result" tab. There is a
+ "Properties" tab in the workbench that can be used to see a
specific JPA
+ result. These results represent the JPA objects because our query did not specify
column
+ names.</para>
+
<figure>
<title>Hibernate Query Result View</title>
<mediaobject>
@@ -726,9 +821,10 @@
</imageobject>
</mediaobject>
</figure>
-
- <para>The query can be refined, and take note that there is nice code
completion in the JPA query editor.</para>
-
+
+ <para>The query can be refined, and take note that there is nice code
completion in the JPA
+ query editor.</para>
+
<figure>
<title>Code Completion</title>
<mediaobject>
@@ -737,9 +833,10 @@
</imageobject>
</mediaobject>
</figure>
-
- <para>A refined query will return results that are more ResultSet oriented.
Notice the join logic that JPA supports.</para>
-
+
+ <para>A refined query will return results that are more ResultSet oriented.
Notice the join
+ logic that JPA supports.</para>
+
<figure>
<title>The Results</title>
<mediaobject>
@@ -748,14 +845,15 @@
</imageobject>
</mediaobject>
</figure>
-
-
- <para>There was no need to specify an
<property>Employees</property> table in the
<property>from</property> part of the JPA query because JPA supports
- reference traversal via Java class attribute references. Not only are JPA and HQL
queries fully supported,
- but Criteria based queries can also be written in the Criteria Editor. You should
spend some time
- tinkering with different queries and possibly Criteria based queries, even though
the instructions are not
- provided in this lab.</para>
-
+
+
+ <para>There was no need to specify an
<property>Employees</property> table in the
+ <property>from</property> part of the JPA query because JPA
supports reference traversal
+ via Java class attribute references. Not only are JPA and HQL queries fully
supported, but
+ Criteria based queries can also be written in the Criteria Editor. You should
spend some
+ time tinkering with different queries and possibly Criteria based queries, even
though the
+ instructions are not provided in this lab.</para>
+
<figure>
<title>Criteria Editor</title>
<mediaobject>
@@ -764,17 +862,19 @@
</imageobject>
</mediaobject>
</figure>
-
+
</section>
-
+
<section id="use_hibernate_to_vizualize">
<title>Use Hibernate Tools to visualize the Data Model</title>
-
+
<para>Now, it’s time to view the data model for the workshop
database.</para>
-
- <para>In the Hibernate Configurations view, select
"workshop" project and expand the
<property>Configuration</property> node.
- Select the <property>Customers</property> entity, right click on it,
choose <property>Open Mapping Diagram</property>.</para>
-
+
+ <para>In the Hibernate Configurations view, select
"workshop" project and
+ expand the <property>Configuration</property> node. Select the
+ <property>Customers</property> entity, right click on it, choose
<property>Open Mapping
+ Diagram</property>.</para>
+
<figure>
<title>Mapping Diagram Opening</title>
<mediaobject>
@@ -783,13 +883,13 @@
</imageobject>
</mediaobject>
</figure>
-
-
- <para>You see a Diagram tab for the CUSTOMERS table and any tables that have
FK references. This is a
- handy way to view the data model and JPA mappings. Now, you’ve got access to
something that the Erwin
- Data Modeler can’t do.</para>
-
-
+
+
+ <para>You see a Diagram tab for the CUSTOMERS table and any tables that have
FK references.
+ This is a handy way to view the data model and JPA mappings. Now, you’ve got
access to
+ something that the Erwin Data Modeler can’t do.</para>
+
+
<figure>
<title>Diagram Tab</title>
<mediaobject>
@@ -798,24 +898,26 @@
</imageobject>
</mediaobject>
</figure>
-
+
</section>
- </section>
+ </section>
-
+
<section id="rich_components">
<title>Rich Components</title>
-
- <para>This lab will conclude with one last AJAX twist. In this section we add a
RichFaces <property>inputNumberSlider</property> to the Order
- Details edit screen.</para>
-
+
+ <para>This lab will conclude with one last AJAX twist. In this section we add a
RichFaces
+ <property>inputNumberSlider</property> to the Order Details edit
screen.</para>
+
<section id="add_richfaces">
<title>Add a Richfaces component to the CRUD Application</title>
-
- <para>Switch to Seam perspective, open
<emphasis><property>WebContent/OrderdetailsEdit.xhtml</property></emphasis>
in JBoss Developer Studio.</para>
- <para>Change the form field values using the visual editor. Seam has
generated the form field names that match the
- database column names. This is not ideal for business users.</para>
-
+
+ <para>Switch to Seam perspective, open <emphasis>
+ <property>WebContent/OrderdetailsEdit.xhtml</property>
+ </emphasis> in JBoss Developer Studio.</para>
+ <para>Change the form field values using the visual editor. Seam has
generated the form field
+ names that match the database column names. This is not ideal for business
users.</para>
+
<figure>
<title>Form Fields Editing</title>
<mediaobject>
@@ -824,10 +926,11 @@
</imageobject>
</mediaobject>
</figure>
-
- <para>Also, replace the QTY Ordered input field with a
<property>inputNumberSlider</property>. You can use the JBoss Developer
- Studio palette or right click on the form and insert the RichFaces
component.</para>
-
+
+ <para>Also, replace the QTY Ordered input field with a
<property>inputNumberSlider</property>.
+ You can use the JBoss Developer Studio palette or right click on the form and
insert the
+ RichFaces component.</para>
+
<figure>
<title>RichFaces Component Inserting</title>
<mediaobject>
@@ -836,12 +939,13 @@
</imageobject>
</mediaobject>
</figure>
-
- <para>One the last option is to use the source view and manually copy the
inputNumberSlider markup listed below:</para>
-
+
+ <para>One the last option is to use the source view and manually copy the
inputNumberSlider
+ markup listed below:</para>
+
<programlisting><![CDATA[<rich:inputNumberSlider
id="quantityOrdered" required="true"
value="#{orderdetailsHome.instance.quantityordered}"/>]]></programlisting>
-
+
<figure>
<title>Adding the Source</title>
<mediaobject>
@@ -850,9 +954,9 @@
</imageobject>
</mediaobject>
</figure>
-
+
<para>The end result is an edit page that has better form labels and a new
RichFaces control.</para>
-
+
<figure>
<title>The Result Page</title>
<mediaobject>
@@ -861,11 +965,50 @@
</imageobject>
</mediaobject>
</figure>
-
+
<para>Congratulations! You have completed the JBoss Developer Studio
lab.</para>
-
+
</section>
-
- </section>
-
+
+ </section>
+
+ <!--section id="gsg_seam_faq">
+ <title>FAQ</title>
+ <para>For more information on work with Seam in JBoss Developer Studio, refer
to the following
+ FAQ to get the answers on the most "popular"
questions.</para>
+
+ <para><emphasis role="bold">How to import an example Seam
project from jboss-eap directory?</emphasis></para>
+
+ <para>To import an example Seam project from <emphasis>
+ <property>jboss-eap</property>
+ </emphasis> into your working directory, you should perform the following
steps:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Go to <emphasis>
+ <property>New > Other > Java Project from Existing
Buildfile</property>
+ </emphasis></para>
+ </listitem>
+
+ <listitem>
+ <para>Point to the <emphasis>
+ <property>build.xml</property>
+ </emphasis> of any chosen project by pressing <emphasis>
+ <property>Browse</property>
+ </emphasis> button</para>
+ </listitem>
+
+ <listitem>
+ <para>Hit <emphasis>
+ <property>Finish</property>
+ </emphasis> to open the project</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>As these seam examples are non WTP projects, next you should enable
Seam support for
+ them. To do that, right click the project and go to<emphasis>
+ <property>Properties > Seam Settings</property>.
</emphasis></para>
+
+ </section-->
+
</chapter>