Author: pete.muir(a)jboss.org
Date: 2008-03-20 09:51:42 -0400 (Thu, 20 Mar 2008)
New Revision: 7652
Modified:
branches/Seam_2_0/doc/Seam_Reference_Guide/en/Conversations.xml
branches/Seam_2_0/doc/Seam_Reference_Guide/en/Gwt.xml
branches/Seam_2_0/doc/Seam_Reference_Guide/en/Jbpm.xml
branches/Seam_2_0/doc/Seam_Reference_Guide/en/Security.xml
branches/Seam_2_0/doc/Seam_Reference_Guide/en/Testing.xml
branches/Seam_2_0/doc/Seam_Reference_Guide/en/Tools.xml
branches/Seam_2_0/doc/Seam_Reference_Guide/en/Tutorial.xml
branches/Seam_2_0/doc/Seam_Reference_Guide/en/Webservices.xml
branches/Seam_2_0/doc/Seam_Reference_Guide/en/styles/html.xsl
Log:
Fix image scaling
Modified: branches/Seam_2_0/doc/Seam_Reference_Guide/en/Conversations.xml
===================================================================
--- branches/Seam_2_0/doc/Seam_Reference_Guide/en/Conversations.xml 2008-03-20 13:40:49
UTC (rev 7651)
+++ branches/Seam_2_0/doc/Seam_Reference_Guide/en/Conversations.xml 2008-03-20 13:51:42
UTC (rev 7652)
@@ -904,7 +904,7 @@
<mediaobject>
<imageobject role="fo">
- <imagedata fileref="images/list.png"
align="center"/>
+ <imagedata fileref="images/list.png" align="center"
scalefit="1"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="images/list.png"
align="center"/>
@@ -938,7 +938,7 @@
<mediaobject>
<imageobject role="fo">
- <imagedata fileref="images/breadcrumbs.png"
align="center"/>
+ <imagedata fileref="images/breadcrumbs.png"
align="center" scalefit="1"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="images/breadcrumbs.png"
align="center"/>
Modified: branches/Seam_2_0/doc/Seam_Reference_Guide/en/Gwt.xml
===================================================================
--- branches/Seam_2_0/doc/Seam_Reference_Guide/en/Gwt.xml 2008-03-20 13:40:49 UTC (rev
7651)
+++ branches/Seam_2_0/doc/Seam_Reference_Guide/en/Gwt.xml 2008-03-20 13:51:42 UTC (rev
7652)
@@ -170,7 +170,7 @@
<mediaobject>
<imageobject role="fo">
- <imagedata fileref="images/gwt-helloworld.png"
align="center"/>
+ <imagedata fileref="images/gwt-helloworld.png"
align="center" scalefit="1"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="images/gwt-helloworld.png"
align="center"/>
Modified: branches/Seam_2_0/doc/Seam_Reference_Guide/en/Jbpm.xml
===================================================================
--- branches/Seam_2_0/doc/Seam_Reference_Guide/en/Jbpm.xml 2008-03-20 13:40:49 UTC (rev
7651)
+++ branches/Seam_2_0/doc/Seam_Reference_Guide/en/Jbpm.xml 2008-03-20 13:51:42 UTC (rev
7652)
@@ -209,7 +209,7 @@
<mediaobject>
<imageobject role="fo">
- <imagedata fileref="images/plugin-jbpm-numguess.png"
align="center"/>
+ <imagedata fileref="images/plugin-jbpm-numguess.png"
align="center" scalefit="1"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="images/plugin-jbpm-numguess.png"
align="center"/>
@@ -632,7 +632,7 @@
<mediaobject>
<imageobject role="fo">
- <imagedata fileref="images/plugin-jbpm-todo.png"
align="center"/>
+ <imagedata fileref="images/plugin-jbpm-todo.png"
align="center" scalefit="1"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="images/plugin-jbpm-todo.png"
align="center"/>
Modified: branches/Seam_2_0/doc/Seam_Reference_Guide/en/Security.xml
===================================================================
--- branches/Seam_2_0/doc/Seam_Reference_Guide/en/Security.xml 2008-03-20 13:40:49 UTC
(rev 7651)
+++ branches/Seam_2_0/doc/Seam_Reference_Guide/en/Security.xml 2008-03-20 13:51:42 UTC
(rev 7652)
@@ -219,7 +219,7 @@
<mediaobject>
<imageobject role="fo">
- <imagedata fileref="images/security-addrole.png"
align="center"/>
+ <imagedata fileref="images/security-addrole.png"
align="center" scalefit="1"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="images/security-addrole.png"
align="center"/>
@@ -1636,7 +1636,7 @@
<mediaobject>
<imageobject role="fo">
- <imagedata fileref="images/security-identitymanager.png"
align="center"/>
+ <imagedata fileref="images/security-identitymanager.png"
align="center" scalefit="1"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="images/security-identitymanager.png"
align="center"/>
@@ -2411,7 +2411,7 @@
<mediaobject>
<imageobject role="fo">
- <imagedata fileref="images/security-usermanager1.png"
align="center"/>
+ <imagedata fileref="images/security-usermanager1.png"
align="center" scalefit="1"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="images/security-usermanager1.png"
align="center"/>
@@ -2424,7 +2424,7 @@
<mediaobject>
<imageobject role="fo">
- <imagedata fileref="images/security-usermanager2.png"
align="center"/>
+ <imagedata fileref="images/security-usermanager2.png"
align="center" scalefit="1"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="images/security-usermanager2.png"
align="center"/>
Modified: branches/Seam_2_0/doc/Seam_Reference_Guide/en/Testing.xml
===================================================================
--- branches/Seam_2_0/doc/Seam_Reference_Guide/en/Testing.xml 2008-03-20 13:40:49 UTC (rev
7651)
+++ branches/Seam_2_0/doc/Seam_Reference_Guide/en/Testing.xml 2008-03-20 13:51:42 UTC (rev
7652)
@@ -301,7 +301,7 @@
<mediaobject>
<imageobject role="fo">
- <imagedata fileref="images/plugin-testng.png"
align="center"/>
+ <imagedata fileref="images/plugin-testng.png"
align="center" scalefit="1"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="images/plugin-testng.png"
align="center"/>
Modified: branches/Seam_2_0/doc/Seam_Reference_Guide/en/Tools.xml
===================================================================
--- branches/Seam_2_0/doc/Seam_Reference_Guide/en/Tools.xml 2008-03-20 13:40:49 UTC (rev
7651)
+++ branches/Seam_2_0/doc/Seam_Reference_Guide/en/Tools.xml 2008-03-20 13:51:42 UTC (rev
7652)
@@ -20,7 +20,7 @@
<screeninfo>Business process designer</screeninfo>
<mediaobject>
<imageobject role="fo">
- <imagedata fileref="images/bpmd.png"
align="center"/>
+ <imagedata fileref="images/bpmd.png" align="center"
scalefit="1"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="images/bpmd.png"
align="center"/>
@@ -42,7 +42,7 @@
<screeninfo>Business process designer</screeninfo>
<mediaobject>
<imageobject role="fo">
- <imagedata fileref="images/bpmpfv.png"
align="center"/>
+ <imagedata fileref="images/bpmpfv.png" align="center"
scalefit="1"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="images/bpmpfv.png"
align="center"/>
Modified: branches/Seam_2_0/doc/Seam_Reference_Guide/en/Tutorial.xml
===================================================================
--- branches/Seam_2_0/doc/Seam_Reference_Guide/en/Tutorial.xml 2008-03-20 13:40:49 UTC
(rev 7651)
+++ branches/Seam_2_0/doc/Seam_Reference_Guide/en/Tutorial.xml 2008-03-20 13:51:42 UTC
(rev 7652)
@@ -125,7 +125,7 @@
<mediaobject>
<imageobject role="fo">
- <imagedata fileref="images/register.png"
align="center"/>
+ <imagedata fileref="images/register.png"
align="center" />
</imageobject>
<imageobject role="html">
<imagedata fileref="images/register.png"
align="center"/>
@@ -140,8 +140,7 @@
<para> We need an EJB entity bean for user data. This class defines
<emphasis>persistence</emphasis> and
<emphasis>validation</emphasis> declaratively, via
annotations. It also needs some extra
annotations that define the class as a Seam component. </para>
-
- <example><title>user data</title>
+ <!-- Can't use code hightlighting with callouts -->
<programlistingco>
<areaspec>
<area id="registration-entity-annotation"
coords="1"/>
@@ -153,7 +152,7 @@
<area id="registration-notnull"
coords="22"/>
<area id="registration-id-annotation"
coords="44"/>
</areaspec>
- <programlisting role="JAVA"><![CDATA[@Entity
+ <programlisting><![CDATA[@Entity
@Name("user")
@Scope(SESSION)
@Table(name="users")
@@ -268,13 +267,8 @@
entity bean domain model. </para>
<para> However, entity beans shouldn't do transaction
management or database access. So we can't use
this component as a JSF action listener. For that we need a
session bean. </para>
-
- </example>
-
-
-
</section>
<section>
@@ -287,8 +281,7 @@
held by the <literal>User</literal> bean. </para>
<para> This is the only really interesting code in the example!
</para>
-
- <example><title></title>
+ <!-- Can't use code hightlighting with callouts -->
<programlistingco>
<areaspec>
<area id="registration-stateless-annotation"
coords="1"/>
@@ -301,7 +294,7 @@
<area id="registration-outcome"
coords="25"/>
<area id="registration-builtin"
coords="29"/>
</areaspec>
- <programlisting
role="JAVA"><![CDATA[@Stateless
+ <programlisting><![CDATA[@Stateless
@Name("register")
public class RegisterAction implements Register
{
@@ -410,8 +403,6 @@
from traditional J2EE architectures. Again, if you are more
comfortable with the traditional
J2EE layering, you can certainly implement that in a Seam
application. But for many
applications, it's simply not very useful. </para>
-
- </example>
</section>
@@ -420,13 +411,13 @@
<para>Naturally, our session bean needs a local
interface.</para>
- <example><title></title>
- <programlisting role="JAVA"><![CDATA[@Local
+
+ <programlisting role="JAVA"><![CDATA[@Local
public interface Register
{
public String register();
}]]></programlisting>
- </example>
+
<para> That's the end of the Java code. Now onto the deployment
descriptors. </para>
@@ -448,8 +439,7 @@
<literal>WEB-INF</literal> directory. We'll use the
<literal>components.xml</literal> file to tell
Seam how to find our EJB components in JNDI: </para>
- <example><title></title>
- <programlisting role="XML"><![CDATA[<?xml
version="1.0" encoding="UTF-8"?>
+ <programlisting role="XML"><![CDATA[<?xml
version="1.0" encoding="UTF-8"?>
<components
xmlns="http://jboss.com/products/seam/components"
xmlns:core="http://jboss.com/products/seam/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -460,7 +450,6 @@
<core:init jndi-pattern="@jndiPattern@"/>
</components>]]></programlisting>
- </example>
<para> This code configures a property named
<literal>jndiPattern</literal> of a built-in Seam component
named <literal>org.jboss.seam.core.init</literal>. The
funny <literal>@</literal> symbols are
@@ -474,7 +463,6 @@
<para> The presentation layer for our mini-application will be
deployed in a WAR. So we'll need a web
deployment descriptor. </para>
- <example><title>web deployment descriptor
config</title>
<programlisting role="XML"><![CDATA[<?xml
version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
@@ -515,7 +503,7 @@
</session-config>
</web-app>]]></programlisting>
- </example>
+
<para> This <literal>web.xml</literal> file configures
Seam and JSF. The configuration you see here is
pretty much identical in all Seam applications. </para>
@@ -529,7 +517,6 @@
<literal>faces-config.xml</literal>. In our case, we
are going to use Facelets for
defining our views, so we need to tell JSF to use Facelets as its
templating engine. </para>
- <example
id="registration-faces-config-xml"><title>registration faces
configuration</title>
<programlisting role="XML"><![CDATA[<?xml
version="1.0" encoding="UTF-8"?>
<faces-config version="1.2"
xmlns="http://java.sun.com/xml/ns/javaee"
@@ -542,7 +529,7 @@
</application>
</faces-config>]]></programlisting>
- </example>
+
<para> Note that we don't need
any JSF managed bean declarations! Our managed beans are annotated
Seam components. In Seam applications,
@@ -619,7 +606,7 @@
<para> The view pages for a Seam application could be implemented
using any technology that supports
JSF. In this example we use Facelets, because we think it's
better than JSP.</para>
- <example
id="registration-simpleform"><title>registration form</title>
+
<programlisting role="XHTML"><![CDATA[<?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">
@@ -648,14 +635,14 @@
</body>
</html>]]></programlisting>
- </example>
+
<para> The only thing here that is specific to Seam is the
<literal><s:validateAll></literal> tag.
This JSF component tells JSF to validate all
the contained input fields against the Hibernate Validator
annotations specified on the entity bean. </para>
- <example
id="registration-simplepage"><title>registration page</title>
- <programlisting role="XML"><![CDATA[<?xml
version="1.0" encoding="utf-8"?>
+
+ <programlisting role="XHTML"><![CDATA[<?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"
@@ -672,7 +659,7 @@
</html>
]]></programlisting>
- </example>
+
<para> This is a boring old Facelets page using some embedded EL.
There is nothing specific to Seam
@@ -685,8 +672,8 @@
<para> Finally, since our application is deployed as an EAR, we
need a deployment descriptor there, too. </para>
- <example
id="registration-application-xml"><title>registration
application</title>
- <programlisting><![CDATA[<?xml version="1.0"
encoding="UTF-8"?>
+
+ <programlisting role="XML"><![CDATA[<?xml
version="1.0" encoding="UTF-8"?>
<application
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
@@ -712,7 +699,7 @@
</module>
</application>]]></programlisting>
- </example>
+
<para> This deployment descriptor links modules in the enterprise
archive and binds the web application
to the context root
<literal>/seam-registration</literal>. </para>
@@ -761,7 +748,7 @@
<mediaobject>
<imageobject role="fo">
- <imagedata fileref="images/messages.png"
align="center"/>
+ <imagedata fileref="images/messages.png"
align="center" scalefit="1"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="images/messages.png"
align="center"/>
@@ -779,8 +766,7 @@
<para> The <literal>Message</literal> entity defines
the title, text, date and time of a message, and a
flag indicating whether the message has been read: </para>
- <example><title></title>
- <programlisting><![CDATA[@Entity
+ <programlisting role="JAVA"><![CDATA[@Entity
@Name("message")
@Scope(EVENT)
public class Message implements Serializable
@@ -833,7 +819,6 @@
}
}]]></programlisting>
- </example>
</section>
@@ -853,9 +838,8 @@
<para> We want to cache the list of messages in memory between
server requests, so we will make this a
stateful session bean. </para>
-
- <example><title></title>
- <programlistingco>
+ <!-- Can't use code hightlighting with callouts -->
+ <programlistingco>
<areaspec>
<area id="messages-datamodel"
coords="7"/>
<area id="messages-datamodelselection"
coords="10"/>
@@ -955,7 +939,7 @@
</callout>
</calloutlist>
</programlistingco>
- </example>
+
<para> Note that this is a session-scoped Seam component. It is
associated with the user login session,
and all requests from a login session share the same instance of the
component. (In Seam
@@ -968,7 +952,7 @@
<para> All session beans have a business interface, of course.
</para>
- <programlisting><![CDATA[@Local
+ <programlisting role="JAVA"><![CDATA[@Local
public interface MessageManager
{
public void findMessages();
@@ -992,8 +976,7 @@
<para> The JSP page is a straightforward use of the JSF
<literal><h:dataTable></literal>
component. Again, nothing specific to Seam. </para>
- <example><title></title>
- <programlisting><![CDATA[<%@ taglib
uri="http://java.sun.com/jsf/html" prefix="h" %>
+ <programlisting role="XHTML"><![CDATA[<%@ taglib
uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib
uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
<head>
@@ -1037,7 +1020,7 @@
</f:view>
</body>
</html>]]></programlisting>
- </example>
+
</section>
@@ -1086,7 +1069,7 @@
<mediaobject>
<imageobject role="fo">
- <imagedata fileref="images/todo.png"
align="center"/>
+ <imagedata fileref="images/todo.png"
align="center" scalefit="1"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="images/todo.png"
align="center"/>
@@ -1098,17 +1081,16 @@
<para> The center of this example is the jBPM process definition. There
are also two JSPs and two trivial
JavaBeans (There was no reason to use session beans, since they do not
access the database, or have any
other transactional behavior). Let's start with the process
definition: </para>
-
- <example><title></title>
- <programlistingco>
- <areaspec>
- <area id="todo-startstate"
coords="3"/>
- <area id="todo-tasknode" coords="7"/>
- <area id="todo-task" coords="8"/>
- <area id="todo-assignment"
coords="9"/>
- <area id="todo-endstate" coords="14"/>
- </areaspec>
- <programlisting><![CDATA[<process-definition
name="todo">
+ <!-- Can't use code hightlighting with callouts -->
+ <programlistingco>
+ <areaspec>
+ <area id="todo-startstate" coords="3"/>
+ <area id="todo-tasknode" coords="7"/>
+ <area id="todo-task" coords="8"/>
+ <area id="todo-assignment" coords="9"/>
+ <area id="todo-endstate" coords="14"/>
+ </areaspec>
+ <programlisting><![CDATA[<process-definition
name="todo">
<start-state name="start">
<transition to="todo"/>
@@ -1154,7 +1136,7 @@
</callout>
</calloutlist>
</programlistingco>
- </example>
+
<para> If we view this process definition using the process definition
editor provided by JBossIDE, this is
what it looks like: </para>
@@ -1176,8 +1158,7 @@
initialize the jBPM actor id using the
<literal>actor</literal> component. (In a real application, it
would also need to authenticate the user.) </para>
- <example><title></title>
- <programlisting><![CDATA[@Name("login")
+ <programlisting
role="JAVA"><![CDATA[@Name("login")
public class Login {
@In
@@ -1199,15 +1180,14 @@
return "/todo.jsp";
}
}]]></programlisting>
- </example>
+
<para> Here we see the use of <literal>@In</literal> to
inject the built-in <literal>Actor</literal>
component. </para>
<para> The JSP itself is trivial: </para>
- <example><title></title>
- <programlisting><![CDATA[<%@ taglib
uri="http://java.sun.com/jsf/html" prefix="h"%>
+ <programlisting role="XHTML"><![CDATA[<%@ taglib
uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib
uri="http://java.sun.com/jsf/core" prefix="f"%>
<html>
<head>
@@ -1226,18 +1206,18 @@
</body>
</html>]]></programlisting>
- </example>
+
<para> The second JavaBean is responsible for starting business process
instances, and ending tasks. </para>
- <example><title></title>
- <programlistingco>
- <areaspec>
- <area id="todo-description"
coords="6"/>
- <area id="todo-createprocess-annotation"
coords="15"/>
- <area id="todo-task-annotations"
coords="18"/>
- </areaspec>
- <programlisting><![CDATA[@Name("todoList")
+ <!-- Can't use code hightlighting with callouts -->
+ <programlistingco>
+ <areaspec>
+ <area id="todo-description" coords="6"/>
+ <area id="todo-createprocess-annotation"
coords="15"/>
+ <area id="todo-task-annotations"
coords="18"/>
+ </areaspec>
+ <programlisting><![CDATA[@Name("todoList")
public class TodoList {
private String description;
@@ -1274,7 +1254,7 @@
</callout>
</calloutlist>
</programlistingco>
- </example>
+
<para> In a more realistic example,
<literal>@StartTask</literal> and <literal>@EndTask</literal>
would not
appear on the same method, because there is usually work to be done using
the application in order to
@@ -1282,8 +1262,7 @@
<para> Finally, the meat of the application is in
<literal>todo.jsp</literal>: </para>
- <example><title></title>
- <programlisting><![CDATA[<%@ taglib
uri="http://java.sun.com/jsf/html" prefix="h" %>
+ <programlisting role="XHTML"><![CDATA[<%@ taglib
uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib
uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib
uri="http://jboss.com/products/seam/taglib" prefix="s"
%>
<html>
@@ -1348,14 +1327,14 @@
</f:view>
</body>
</html>]]></programlisting>
- </example>
+
<para> Let's take this one piece at a time. </para>
<para> The page renders a list of tasks, which it gets from a built-in
Seam component named
<literal>taskInstanceList</literal>. The list is defined
inside a JSF form. </para>
- <programlisting><![CDATA[<h:form id="list">
+ <programlisting role="XHTML"><![CDATA[<h:form
id="list">
<div>
<h:outputText value="There are no todo items." rendered="#{empty
taskInstanceList}"/>
<h:dataTable value="#{taskInstanceList}" var="task"
@@ -1369,7 +1348,7 @@
following code simply displays the interesting properties of each task in
the list. For the description,
priority and due date, we use input controls, to allow the user to update
these values. </para>
- <programlisting><![CDATA[<h:column>
+ <programlisting role="XHTML"><![CDATA[<h:column>
<f:facet name="header">
<h:outputText value="Description"/>
</f:facet>
@@ -1402,7 +1381,7 @@
<para> This button ends the task by calling the action method annotated
<literal>@StartTask
@EndTask</literal>. It passes the task id to Seam as a request
parameter: </para>
- <programlisting><![CDATA[<h:column>
+ <programlisting role="XHTML"><![CDATA[<h:column>
<s:button value="Done" action="#{todoList.done}"
taskInstance="#{task}"/>
</h:column>]]></programlisting>
@@ -1412,12 +1391,12 @@
<para> This button is used to update the properties of the tasks. When
the form is submitted, Seam and jBPM
will make any changes to the tasks persistent. There is no need for any
action listener method: </para>
- <programlisting><![CDATA[<h:commandButton value="Update
Items" action="update"/>]]></programlisting>
+ <programlisting role="XHTML"><![CDATA[<h:commandButton
value="Update Items"
action="update"/>]]></programlisting>
<para> A second form on the page is used to create new items, by
calling the action method annotated
<literal>@CreateProcess</literal>. </para>
- <programlisting><![CDATA[<h:form id="new">
+ <programlisting role="XHTML"><![CDATA[<h:form
id="new">
<div>
<h:inputText value="#{todoList.description}"/>
<h:commandButton value="Create New Item"
action="#{todoList.createTodo}"/>
@@ -1449,7 +1428,7 @@
<mediaobject>
<imageobject role="fo">
- <imagedata fileref="images/numberguess.png"
align="center"/>
+ <imagedata fileref="images/numberguess.png"
align="center" scalefit="1"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="images/numberguess.png"
align="center"/>
@@ -1460,16 +1439,15 @@
<title>Understanding the code</title>
<para> The example is implemented using one JavaBean, three JSP pages
and a jPDL pageflow definition. Let's
begin with the pageflow: </para>
-
- <example><title></title>
- <programlistingco>
- <areaspec>
- <area id="numberguess-page"
coords="8"/>
- <area id="numberguess-transition"
coords="10"/>
- <area id="numberguess-action"
coords="11"/>
- <area id="numberguess-decision"
coords="16"/>
- </areaspec>
- <programlisting><![CDATA[<pageflow-definition
+ <!-- Can't use code hightlighting with callouts -->
+ <programlistingco>
+ <areaspec>
+ <area id="numberguess-page" coords="8"/>
+ <area id="numberguess-transition"
coords="10"/>
+ <area id="numberguess-action"
coords="11"/>
+ <area id="numberguess-decision"
coords="16"/>
+ </areaspec>
+ <programlisting><![CDATA[<pageflow-definition
xmlns="http://jboss.com/products/seam/pageflow"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.com/products/seam/pageflow
@@ -1536,13 +1514,13 @@
</callout>
</calloutlist>
</programlistingco>
- </example>
+
- <para> Here is what the pageflow looks like in the JBossIDE pageflow
editor: </para>
+ <para> Here is what the pageflow looks like in the JBoss Developer
Studio pageflow editor: </para>
<mediaobject>
<imageobject role="fo">
- <imagedata fileref="images/numberguess-pageflow.png"
align="center"/>
+ <imagedata fileref="images/numberguess-pageflow.png"
align="center" scalefit="1"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="images/numberguess-pageflow.png"
align="center"/>
@@ -1553,8 +1531,7 @@
<para> Here is the main page of the application,
<literal>numberGuess.jspx</literal>: </para>
- <example><title></title>
- <programlisting><![CDATA[<<?xml
version="1.0"?>
+ <programlisting role="XHTML"><![CDATA[<<?xml
version="1.0"?>
<jsp:root
xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
@@ -1624,15 +1601,14 @@
</body>
</html>
</jsp:root>]]></programlisting>
- </example>
+
<para> Notice how the command button names the
<literal>guess</literal> transition instead of calling an
action directly. </para>
<para> The <literal>win.jspx</literal> page is predictable:
</para>
- <example><title></title>
- <programlisting><![CDATA[<jsp:root
xmlns:jsp="http://java.sun.com/JSP/Page"
+ <programlisting role="JSP"><![CDATA[<jsp:root
xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns="http://www.w3.org/1999/xhtml"
@@ -1659,17 +1635,16 @@
</html>
</jsp:root>
]]></programlisting>
- </example>
+
<para> As is <literal>lose.jspx</literal> (which I
can't be bothered copy/pasting). Finally, the JavaBean
Seam component: </para>
-
- <example><title></title>
- <programlistingco>
- <areaspec>
- <area id="numberguess-create"
coords="13"/>
- </areaspec>
- <programlisting><![CDATA[@Name("numberGuess")
+ <!-- Can't use code hightlighting with callouts -->
+ <programlistingco>
+ <areaspec>
+ <area id="numberguess-create"
coords="13"/>
+ </areaspec>
+ <programlisting><![CDATA[@Name("numberGuess")
@Scope(ScopeType.CONVERSATION)
public class NumberGuess implements Serializable {
@@ -1780,7 +1755,7 @@
</callout>
</calloutlist>
</programlistingco>
- </example>
+
<para>The <literal>pages.xml</literal> file starts a Seam
@@ -1789,8 +1764,7 @@
</para>
- <example><title></title>
- <programlisting><![CDATA[<?xml version="1.0"
encoding="UTF-8"?>
+ <programlisting role="XML"><![CDATA[<?xml
version="1.0" encoding="UTF-8"?>
<pages
xmlns="http://jboss.com/products/seam/pages"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.com/products/seam/pages
http://jboss.com/products/seam/pages-2.1.xsd">
@@ -1805,8 +1779,8 @@
</pages>
]]></programlisting>
- </example>
+
<para> As you can see, this Seam component is pure business logic!
It doesn't need to know anything at all
about the user interaction flow. This makes the component potentially
more reuseable. </para>
@@ -1862,7 +1836,7 @@
<screeninfo>Booking example</screeninfo>
<mediaobject>
<imageobject role="fo">
- <imagedata fileref="images/booking.png"
align="center"/>
+ <imagedata fileref="images/booking.png" align="center"
scalefit="1"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="images/booking.png"
align="center"/>
@@ -1990,16 +1964,16 @@
<para> The search functionality is implemented using a session-scope
stateful session bean, similar to the
one we saw in the message list example above. </para>
-
- <example><title></title>
- <programlistingco>
- <areaspec>
- <area id="booking-stateful-annotation"
coords="1"/>
- <area id="booking-restrict-annotation"
coords="4"/>
- <area id="booking-datamodel-annotation"
coords="15"/>
- <area id="booking-destroy-annotation"
coords="70"/>
- </areaspec>
- <programlisting><![CDATA[@Stateful
+
+ <!-- Can't use code hightlighting with callouts -->
+ <programlistingco>
+ <areaspec>
+ <area id="booking-stateful-annotation"
coords="1"/>
+ <area id="booking-restrict-annotation"
coords="4"/>
+ <area id="booking-datamodel-annotation"
coords="15"/>
+ <area id="booking-destroy-annotation"
coords="70"/>
+ </areaspec>
+ <programlisting><![CDATA[@Stateful
@Name("hotelSearch")
@Scope(ScopeType.SESSION)
@Restrict("#{identity.loggedIn}")
@@ -2101,20 +2075,20 @@
</callout>
</calloutlist>
</programlistingco>
- </example>
+
<para> The main page of the application is a Facelets page. Let's
look at the fragment which relates to
searching for hotels: </para>
- <example><title></title>
- <programlistingco>
- <areaspec>
- <area id="booking-support-element"
coords="14"/>
- <area id="booking-status-element"
coords="20"/>
- <area id="booking-outputpanel-element"
coords="37"/>
- <area id="booking-link-element"
coords="61"/>
- </areaspec>
- <programlisting><![CDATA[<div
class="section">
+ <!-- Can't use code hightlighting with callouts -->
+ <programlistingco>
+ <areaspec>
+ <area id="booking-support-element"
coords="14"/>
+ <area id="booking-status-element"
coords="20"/>
+ <area id="booking-outputpanel-element"
coords="37"/>
+ <area id="booking-link-element"
coords="61"/>
+ </areaspec>
+ <programlisting><![CDATA[<div class="section">
<span class="errors">
<h:messages globalOnly="true"/>
@@ -2212,7 +2186,7 @@
</callout>
</calloutlist>
</programlistingco>
- </example>
+
<para> This page displays the search results dynamically as we type,
and lets us choose a hotel and pass it
to the <literal>selectHotel()</literal> method of the
<literal>HotelBookingAction</literal>, which is
@@ -2224,16 +2198,16 @@
pretty long. But if you think of it as a list of scripted actions that
implement the various steps of
the conversation, it's understandable. Read the class from top to
bottom, as if it were a story. </para>
- <example><title></title>
- <programlistingco>
- <areaspec>
- <area
id="booking-extendedpersistencecontext-annotation" coords="7"/>
- <area id="booking-out-annotation"
coords="17"/>
- <area id="booking-begin-annotation"
coords="31"/>
- <area id="booking-end-annotation"
coords="72"/>
- <area id="booking-dest-annotation"
coords="85"/>
- </areaspec>
- <programlisting><![CDATA[@Stateful
+ <!-- Can't use code hightlighting with callouts -->
+ <programlistingco>
+ <areaspec>
+ <area
id="booking-extendedpersistencecontext-annotation" coords="7"/>
+ <area id="booking-out-annotation"
coords="17"/>
+ <area id="booking-begin-annotation"
coords="31"/>
+ <area id="booking-end-annotation"
coords="72"/>
+ <area id="booking-dest-annotation"
coords="85"/>
+ </areaspec>
+ <programlisting><![CDATA[@Stateful
@Name("hotelBooking")
@Restrict("#{identity.loggedIn}")
public class HotelBookingAction implements HotelBooking
@@ -2356,7 +2330,7 @@
</callout>
</calloutlist>
</programlistingco>
- </example>
+
<para>
<literal>HotelBookingAction</literal> contains all the action
listener methods that implement selection,
@@ -2381,7 +2355,7 @@
<literal><s:link></literal> control for
navigation from the search screen to the hotel
page: </para>
- <programlisting><![CDATA[<s:link value="View Hotel"
action="#{hotelBooking.selectHotel(hot)}"/>]]></programlisting>
+ <programlisting role="JAVA"><![CDATA[<s:link
value="View Hotel"
action="#{hotelBooking.selectHotel(hot)}"/>]]></programlisting>
<para> The use of <literal><s:link></literal>
here allows us to attach an action listener to a
HTML link without breaking the browser's "open in new
window" feature. The standard JSF
@@ -2403,7 +2377,7 @@
<literal>WEB-INF/lib</literal>, along with the Facelets,
and if you set the debug property
of the <literal>init</literal> component:</para>
- <programlisting><![CDATA[<core:init
jndi-pattern="@jndiPattern@"
debug="true"/>]]></programlisting>
+ <programlisting role="XML"><![CDATA[<core:init
jndi-pattern="@jndiPattern@"
debug="true"/>]]></programlisting>
<para> This page lets you browse and inspect the Seam components
in any of the Seam contexts associated with your current login session.
Just point your browser at
@@ -2413,7 +2387,7 @@
<mediaobject>
<imageobject role="fo">
- <imagedata fileref="images/debug.png"
align="center"/>
+ <imagedata fileref="images/debug.png"
align="center" scalefit="1"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="images/debug.png"
align="center"/>
@@ -2436,7 +2410,7 @@
<screeninfo>DVD Store example</screeninfo>
<mediaobject>
<imageobject role="fo">
- <imagedata fileref="images/dvdsearch.png"
align="center"/>
+ <imagedata fileref="images/dvdsearch.png"
align="center" scalefit="1"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="images/dvdsearch.png"
align="center"/>
@@ -2451,7 +2425,7 @@
<screeninfo>DVD Store example</screeninfo>
<mediaobject>
<imageobject role="fo">
- <imagedata fileref="images/dvdtasks.png"
align="center"/>
+ <imagedata fileref="images/dvdtasks.png"
align="center" scalefit="1"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="images/dvdtasks.png"
align="center"/>
@@ -2487,7 +2461,7 @@
<screeninfo>Blog example</screeninfo>
<mediaobject>
<imageobject role="fo">
- <imagedata fileref="images/blog.png"
align="center"/>
+ <imagedata fileref="images/blog.png" align="center"
scalefit="1"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="images/blog.png"
align="center"/>
@@ -2505,8 +2479,7 @@
<para> This snippet from the <literal>index.xhtml</literal>
facelets page displays a list of recent blog
entries: </para>
- <example><title></title>
- <programlisting><![CDATA[<h:dataTable
value="#{blog.recentBlogEntries}" var="blogEntry"
rows="3">
+ <programlisting role="XHTML"><![CDATA[<h:dataTable
value="#{blog.recentBlogEntries}" var="blogEntry"
rows="3">
<h:column>
<div class="blogEntry">
<h3>#{blogEntry.title}</h3>
@@ -2534,7 +2507,7 @@
</div>
</h:column>
</h:dataTable>]]></programlisting>
- </example>
+
<para> If we navigate to this page from a bookmark, how does the data
used by the
<literal><h:dataTable></literal> actually
get initialized? Well, what happens is that
@@ -2542,13 +2515,13 @@
component named <literal>blog</literal>. This is the opposite
flow of control to what is usual in
traditional web action-based frameworks like Struts. </para>
- <example><title></title>
- <programlistingco>
- <areaspec>
- <area id="blog-seampc" coords="7"/>
- <area id="blog-unwrap" coords="9"/>
- </areaspec>
- <programlisting><![CDATA[@Name("blog")
+ <!-- Can't use code hightlighting with callouts -->
+ <programlistingco>
+ <areaspec>
+ <area id="blog-seampc" coords="7"/>
+ <area id="blog-unwrap" coords="9"/>
+ </areaspec>
+ <programlisting
role="JAVA"><![CDATA[@Name("blog")
@Scope(ScopeType.STATELESS)
@AutoCreate
public class BlogService
@@ -2581,7 +2554,7 @@
</callout>
</calloutlist>
</programlistingco>
- </example>
+
<para> This is good so far, but what about bookmarking the result of
form submissions, such as a search
results page? </para>
@@ -2595,40 +2568,37 @@
blog entries. This is defined in a file,
<literal>menu.xhtml</literal>, included by the facelets
template, <literal>template.xhtml</literal>: </para>
- <example><title></title>
- <programlisting><![CDATA[<div id="search">
+ <programlisting role="XHTML"><![CDATA[<div
id="search">
<h:form>
<h:inputText value="#{searchAction.searchPattern}"/>
<h:commandButton value="Search" action="/search.xhtml"/>
</h:form>
</div>]]></programlisting>
- </example>
+
<para> To implement a bookmarkable search results page, we need to
perform a browser redirect after
processing the search form submission. Because we used the JSF view id as
the action outcome, Seam
automatically redirects to the view id when the form is submitted.
Alternatively, we could have defined
a navigation rule like this: </para>
-
- <example><title></title>
- <programlisting><![CDATA[<navigation-rule>
+
+ <programlisting role="XML"><![CDATA[<navigation-rule>
<navigation-case>
<from-outcome>searchResults</from-outcome>
<to-view-id>/search.xhtml</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>]]></programlisting>
-</example>
- <para> Then the form would have looked like this: </para>
- <example><title></title>
- <programlisting><![CDATA[<div id="search">
+ <para> Then the form would have looked like this: </para>
+
+ <programlisting role="XHTML"><![CDATA[<div
id="search">
<h:form>
<h:inputText value="#{searchAction.searchPattern}"/>
<h:commandButton value="Search" action="searchResults"/>
</h:form>
</div>]]></programlisting>
- </example>
+
<para> But when we redirect, we need to include the values submitted
with the form as request parameters, to
get a bookmarkable URL like
@@ -2636,23 +2606,21 @@
an easy way to do this, but Seam does. We use a Seam <emphasis>page
parameter</emphasis>, defined in
<literal>WEB-INF/pages.xml</literal>: </para>
- <example><title></title>
- <programlisting><![CDATA[<pages>
+ <programlisting role="XML"><![CDATA[<pages>
<page view-id="/search.xhtml">
<param name="searchPattern"
value="#{searchService.searchPattern}"/>
</page>
...
</pages>]]></programlisting>
- </example>
+
<para> This tells Seam to include the value of
<literal>#{searchService.searchPattern}</literal> as a
request parameter named <literal>searchPattern</literal> when
redirecting to the page, and then re-apply
the value of that parameter to the model before rendering the page.
</para>
<para> The redirect takes us to the
<literal>search.xhtml</literal> page: </para>
-
- <example><title></title>
- <programlisting><![CDATA[<h:dataTable
value="#{searchResults}" var="blogEntry">
+
+ <programlisting role="XHTML"><![CDATA[<h:dataTable
value="#{searchResults}" var="blogEntry">
<h:column>
<div>
<h:outputLink value="entry.seam">
@@ -2666,12 +2634,11 @@
</div>
</h:column>
</h:dataTable>]]></programlisting>
- </example>
+
<para> Which again uses "pull"-style MVC to retrieve the
actual search results: </para>
- <example><title></title>
- <programlisting><![CDATA[@Name("searchService")
+ <programlisting
role="JAVA"><![CDATA[@Name("searchService")
public class SearchService
{
@@ -2715,7 +2682,7 @@
}
}]]></programlisting>
- </example>
+
</section>
@@ -2730,8 +2697,7 @@
<para> The <literal>entryAction</literal> component works
much like an action class in a traditional
push-MVC action-oriented framework like Struts: </para>
- <example><title></title>
- <programlisting><![CDATA[@Name("entryAction")
+ <programlisting
role="JAVA"><![CDATA[@Name("entryAction")
@Scope(STATELESS)
public class EntryAction
{
@@ -2748,12 +2714,11 @@
}
}]]></programlisting>
- </example>
+
<para> Page actions are also declared in
<literal>pages.xml</literal>: </para>
- <example><title></title>
- <programlisting><![CDATA[<pages>
+ <programlisting role="XML"><![CDATA[<pages>
...
<page view-id="/entry.xhtml"
action="#{entryAction.loadBlogEntry(blogEntry.id)}">
@@ -2765,7 +2730,7 @@
<page view-id="*" action="#{blog.hitCount.hit}"/>
</pages>]]></programlisting>
- </example>
+
<para> Notice that the example is using page actions for some other
functionality—the login
challenge, and the pageview counter. Also notice the use of a parameter
in the page action method
@@ -2777,8 +2742,7 @@
data—the <literal>blogEntry</literal>—and
places it in the Seam event context.
Finally, the following is rendered: </para>
- <example><title></title>
- <programlisting><![CDATA[<div class="blogEntry">
+ <programlisting role="XHTML"><![CDATA[<div
class="blogEntry">
<h3>#{blogEntry.title}</h3>
<div>
<h:outputText escape="false" value="#{blogEntry.body}"/>
@@ -2791,15 +2755,13 @@
</h:outputText>]
</p>
</div>]]></programlisting>
- </example>
+
<para> If the blog entry is not found in the database, the
<literal>EntryNotFoundException</literal>
exception is thrown. We want this exception to result in a 404 error, not
a 505, so we annotate the
exception class: </para>
-
- <example><title></title>
- <programlisting><![CDATA[@ApplicationException(rollback=true)
+ <programlisting
role="JAVA"><![CDATA[@ApplicationException(rollback=true)
@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)
public class EntryNotFoundException extends Exception
{
@@ -2808,12 +2770,11 @@
super("entry not found: " + id);
}
}]]></programlisting>
- </example>
+
<para> An alternative implementation of the example does not use the
parameter in the method binding: </para>
- <example><title></title>
- <programlisting><![CDATA[@Name("entryAction")
+ <programlisting
role="JAVA"><![CDATA[@Name("entryAction")
@Scope(STATELESS)
public class EntryAction
{
@@ -2831,7 +2792,7 @@
}]]></programlisting>
- <programlisting><![CDATA[<pages>
+ <programlisting role="XML"><![CDATA[<pages>
...
<page view-id="/entry.xhtml"
action="#{entryAction.loadBlogEntry}">
@@ -2839,7 +2800,7 @@
</page>
...
-</pages>]]></programlisting></example>
+</pages>]]></programlisting>
<para> It is a matter of taste which implementation you prefer.
</para>
Modified: branches/Seam_2_0/doc/Seam_Reference_Guide/en/Webservices.xml
===================================================================
--- branches/Seam_2_0/doc/Seam_Reference_Guide/en/Webservices.xml 2008-03-20 13:40:49 UTC
(rev 7651)
+++ branches/Seam_2_0/doc/Seam_Reference_Guide/en/Webservices.xml 2008-03-20 13:51:42 UTC
(rev 7652)
@@ -99,7 +99,7 @@
<mediaobject>
<imageobject role="fo">
- <imagedata fileref="images/ws-strategy.png"
align="center"/>
+ <imagedata fileref="images/ws-strategy.png"
align="center" scalefit="1"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="images/ws-strategy.png"
align="center"/>
Modified: branches/Seam_2_0/doc/Seam_Reference_Guide/en/styles/html.xsl
===================================================================
--- branches/Seam_2_0/doc/Seam_Reference_Guide/en/styles/html.xsl 2008-03-20 13:40:49 UTC
(rev 7651)
+++ branches/Seam_2_0/doc/Seam_Reference_Guide/en/styles/html.xsl 2008-03-20 13:51:42 UTC
(rev 7652)
@@ -61,7 +61,7 @@
<!--###################################################
Callouts
################################################### -->
-
+ <xsl:param name="callout.extensions">1</xsl:param>
<!-- Don't use graphics, use a simple number style -->
<xsl:param name="callout.graphics">0</xsl:param>
@@ -79,6 +79,6 @@
equation before
table before
procedure before
- </xsl:param>
+ </xsl:param>
</xsl:stylesheet>