Author: steveh
Date: Fri Mar 18 10:31:07 2005
New Revision: 158119
URL: http://svn.apache.org/viewcvs?view=rev&rev=158119
Log:
Integrating doc work from the trunk to the beta branch.
Added:
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/config/beehive-netui-config.xml
(with props)
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_databinding.xml
(with props)
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_datagrid.xml
(with props)
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/popupWindows.xml
(with props)
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/resources/images/nested_1.dia
(with props)
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/resources/images/nested_1.png
(with props)
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/resources/images/nested_2.dia
(with props)
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/resources/images/nested_2.png
(with props)
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/resources/images/pageflow_database_app_1.dia
(with props)
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/resources/images/pageflow_database_app_1.png
(with props)
Removed:
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/config/netui-config.xml
Modified:
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/controlsOverview.xml
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/sample_controls-blank.xml
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/sample_controls-db.xml
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/index.xml
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/jpetstore.xml
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/guide.xml
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/index.xml
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_overview.xml
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/sample_netui-blank.xml
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/tutorial_pageflow.xml
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/setup.xml
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/site.xml
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/wsm/sample_AddressBook.xml
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/wsm/sample_Dashboard.xml
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/wsm/sample_wsm-blank.xml
Modified:
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/controlsOverview.xml
URL:
http://svn.apache.org/viewcvs/incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/controlsOverview.xml?view=diff&r1=158118&r2=158119
==============================================================================
---
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/controlsOverview.xml
(original)
+++
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/controlsOverview.xml
Fri Mar 18 10:31:07 2005
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN"
"http://forrest.apache.org/dtd/document-v13.dtd">
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN"
"http://forrest.apache.org/dtd/document-v20.dtd">
<document>
<header>
<title>Controls Overview</title>
@@ -9,24 +9,22 @@
<title>Overview</title>
<section>
<title>The Problem with J2EE: Complexity</title>
- <p>
-J2EE provides a rich set of component types, protocols, and system services
that can be used to assemble an application or service</p>
- <p>
- <strong>
+ <p>J2EE provides a rich set of component types, protocols, and
system services that can be used to assemble an application or service.</p>
+ <p><strong>
As the scope of the J2EE architectural design space has grown, the complexity
of assembling solutions has also grown.</strong>
</p>
<p>Many of the basic building blocks provide their own set of
mechanisms for how J2EE abstractions are accessed, how usage is parameterized,
and how resources associated with them (connections, sessions, etc) are
managed.</p>
<p>
-An objective of the J2EE community is to expand beyond the Java system
software developer that has traditionally built J2EE solutions to enfranchise a
new type of developer: the corporate developer. The corporate developer is
often a very strong programmer, but may have significantly less experience with
object-oriented design, building distributed systems, and Java/J2EE.</p>
+An objective of the J2EE community is to expand beyond the Java system
software developer who has traditionally built J2EE solutions to enfranchise a
new type of developer: the corporate developer. The corporate developer is
often a very strong programmer, but may have significantly less experience with
object-oriented design, building distributed systems, and Java/J2EE.</p>
<p>
<strong>The goal is to enable a collaboration where the
base J2EE distributed system architecture and back-end components can be
designed and built by the J2EE system software developer, then assembled into
exposed web user interfaces, web services, or applications by the corporate or
application developer.
</strong>
</p>
- <p>But the complexity and diversity of J2EE client access
models stands in direct opposition to achieving this goal. Depending upon the
system architecture and components constructed by the system developer, the
application developer might have to learn a variety of new technologies and
APIs to work within the architecture.
+ <p>But the complexity and diversity of J2EE client access
models stand in direct opposition to achieving this goal. Depending upon the
system architecture and components constructed by the system developer, the
application developer might have to learn a variety of new technologies and
APIs to work within the architecture.
</p>
<p>Consider a simple example: A systems developer has built a
distributed system where synchronous services are exposed as Enterprise
JavaBeans and asynchronous services are exposed via JMS queues. A corporate
developer new to J2EE is tasked with building a web user interface that
integrates with these services.
</p>
- <p>To accomplish his task, the corporate developer now has to
learn how to:</p>
+ <p>To accomplish this task, the corporate developer now has to
learn how to:</p>
<ul>
<li>Create a JNDI context and lookup resources. If
resources are app-scoped, then how to provide the appropriate deployment
descriptor configuration.</li>
<li>How to use home/business interfaces of exposed EJBs to
access business methods, including understanding differences in usage depending
upon whether the exposed EJBs are Stateless Session Beans, Stateful Session
Beans, or Entity Beans.</li>
@@ -35,7 +33,7 @@
<li>How to properly manage the resources associated with
the above, such that vital system resources (such as connections) are used
efficiently and correctly. The cost of a subtle mistake can be poor system
performance or even system failure.</li>
</ul>
<p>
-What initially appears to be a simple task in the abstract (call these EJBs or
enqueue a message that looks like this) can devolve into hours or days or
reading J2EE HowTo books and Javadoc API references, getting the right
deployment descriptor values configured, and calling all the right APIs, at all
of the right times, in the right order. In the resulting application or
service, often the directly application-related code (i.e. calling the bean
business method or building message contents) is a small fraction of the total
code required to accomplish the task.</p>
+What initially appears to be a simple task in the abstract (call these EJBs or
enqueue a message that looks like this) can devolve into hours or days of
reading J2EE HowTo books and Javadoc API references, getting the right
deployment descriptor values configured, and calling all the right APIs, at all
of the right times, in the right order. In the resulting application or
service, often the directly application-related code (i.e. calling the bean
business method or building message contents) is a small fraction of the total
code required to accomplish the task.</p>
<p>
Here is an example of the code required to invoke a single method on an
exposed EJB using standard J2EE APIs: </p>
<source>Trader trader = null;
@@ -56,7 +54,17 @@
if (trader != null)
trader.remove();
}</source>
- <p>A common solution to this problem is often to task the J2EE
professional developer with constructing facades or custom frameworks that hide
some of the underlying complexity and resource access mechanisms and provides
appropriate guarantees that system resources (connections, sessions, handles,
etc) are utilized properly. But constructing these intermediate abstractions is
an inefficient use of (an often scarce and expensive) systems development
resources. Depending upon the "thickness" of the intermediate abstractions,
this approach can also have performance or application deployment footprint
implications. </p>
+ <p>A common solution to this problem is often to
+ task the J2EE professional developer
with constructing facades or custom
+ frameworks that hide some of the
underlying complexity of the resource access
+ mechanisms and provides appropriate
guarantees that system resources
+ (connections, sessions, handles, etc)
are utilized properly. But constructing
+ these intermediate abstractions is an
inefficient use of
+ (often scarce and expensive)
+ systems development resources.
Depending upon the "thickness" of the intermediate
+ abstractions,
+ this approach can also have performance
or application deployment footprint
+ implications. </p>
</section>
<section>
<title>Solution: Controls: A Unified Client Programming Model
</title>
@@ -317,9 +325,10 @@
<p>
Contextual services can also define an event model, so contextual services can
also declare and fire events on Controls that have registered in interest. As
an example, a basic ControlContext contextual service is provided as part of
the base Controls architecture. This contextual service provides common
services for Controls, such as access to properties, as well as a set of
lifecycle events for Controls.
</p>
-<p>
-The discovery and implementation model for Controls Contextual Services will
be based upon the JavaBeans Runtime Containment and Services Protocol (Glasgow)
(<link
href="http://java.sun.com/products/javabeans/glasgow/#containment">http://java.sun.com/products/javabeans/glasgow/#containment</link>)
that is already shipping as part of J2SE.
-</p>
+<p>The discovery and implementation model for Controls Contextual Services
will be based upon the
+ JavaBeans Runtime Containment and Services Protocol (Glasgow)
+ (<a
href="http://java.sun.com/products/javabeans/glasgow/#containment">http://java.sun.com/products/javabeans/glasgow/#containment</a>)
+ that is already shipping as part of J2SE.</p>
</section>
<section>
<title>Resource Management</title>
Modified:
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/sample_controls-blank.xml
URL:
http://svn.apache.org/viewcvs/incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/sample_controls-blank.xml?view=diff&r1=158118&r2=158119
==============================================================================
---
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/sample_controls-blank.xml
(original)
+++
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/sample_controls-blank.xml
Fri Mar 18 10:31:07 2005
@@ -22,7 +22,7 @@
<p>The following instruction assume that you have completed the basic
Beehive set up procedure
at <a class="fork" href="../setup.html">Set Up the Dev
Environment</a>.</p>
<p>To use the template, copy the contents of
<code><BeehiveRoot>/samples/controls-blank</code> into your
- project folder (refered to as <code><Project-Folder></code> below).
(Or copy <code>controls-blank</code>
+ project folder (referred to as <code><Project-Folder></code> below).
(Or copy <code>controls-blank</code>
to another location and rename it as <code><Project-Folder></code>.)
An Ant build file is included
in the template, which will compile your control project into a
distributable JAR
@@ -31,7 +31,7 @@
<source><Project-Folder>
src
build.xml</source>
- <p>The following Ant command will compile the control template. </p>
+ <p>The following Ant command will compile the control template.</p>
<source>ant -f <strong><Path-to-Project-Folder></strong>\build.xml
build</source>
<p>This will produce a distributable JAR file at:
<code><Project-Folder>/build/mycontrols.jar</code>.</p>
<p>To use the JAR in your other projects (like a web app project or a web
service project), copy
Modified:
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/sample_controls-db.xml
URL:
http://svn.apache.org/viewcvs/incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/sample_controls-db.xml?view=diff&r1=158118&r2=158119
==============================================================================
---
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/sample_controls-db.xml
(original)
+++
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/sample_controls-db.xml
Fri Mar 18 10:31:07 2005
@@ -34,7 +34,13 @@
<p>In this example, the title field is of type VARCHAR, so the return value is
declared as String. </p>
-<p>When your method returns a single row with multiple fields, its return type
can be a user-defined object or a java.util.HashMap object. When the return
type is a user-defined object, it must contain members with names that match
the names of the columns that will be returned by the query. Because database
column names are case-insensitive, the matching names are case-insensitive. The
class may also contain other members, members not matching any column names
will not be set. The following example declares an Employee class with members
corresponding to fields in the Employee table. The findEmployee method returns
an object of type Employee:</p>
+<p>When your method returns a single row with multiple fields, its return type
can be a user-defined
+ object or a java.util.HashMap object. When the return type is a
user-defined object, it must
+ contain members with names that match the names of the columns that
will be returned by the query.
+ Because database column names are case-insensitive, the matching names
are case-insensitive. The
+ class may also contain other members; members not matching any column
names will not be set.
+ The following example declares an Employee class with members
corresponding to fields in the
+ Employee table. The findEmployee method returns an object of type
Employee:</p>
<source> @SQL(statement="SELECT * FROM EMPLOYEE WHERE id={id}")
public Employee findEmployee(int id) throws SQLException;
@@ -47,8 +53,11 @@
public String title;
}</source>
-<p>When your method returns multiple rows from the database, its return type
can be an array, a java.util.Iterator, or a java.sql.ResultSet. </p>
-<p>When you want to return an Iterator object, you must specify the
iteratorElementType element to the @SQL annotation to indicate the underlying
type that the Iterator will contain. The following example returns a iterator
of all employees sorted by their last names.</p>
+<p>When your method returns multiple rows from the database, its return type
can be an array, a
+ java.util.Iterator, or a java.sql.ResultSet. </p>
+<p>When you want to return an Iterator object, you must specify the
iteratorElementType
+ element to the @SQL annotation to indicate the underlying type that the
Iterator will contain.
+ The following example returns an iterator of all employees sorted by
their last names.</p>
<source> @SQL(statement="SELECT * FROM EMPLOYEE ORDER BY lName",
iteratorElementType=Employee.class, maxRows=500)
public Iterator getEmployeesSortedByLastName() throws
SQLException;</source>
Modified:
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/index.xml
URL:
http://svn.apache.org/viewcvs/incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/index.xml?view=diff&r1=158118&r2=158119
==============================================================================
---
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/index.xml
(original)
+++
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/index.xml
Fri Mar 18 10:31:07 2005
@@ -11,7 +11,7 @@
<anchor id="what"/>
<p> Welcome to Beehive! Our goal is to make J2EE
programming easier
by building a simple object model on J2EE and
Struts. Using the
- new JSR-175 and JSR-181 metadata annotations
Beehive reduces
+ new JSR-175 and JSR-181 metadata annotations,
Beehive reduces
the coding necessary for J2EE. The initial
Beehive project has
three pieces.</p>
<ul>
@@ -25,8 +25,8 @@
with a few pre-made controls as well,
for example, see the
<a
href="controls/sample_controls-db.html">Database Control
Sample</a>.</li>
- <li>Web Services – An Implementation of
JSR-181, an
- annotation driven programming model for
web services.</li>
+ <li>Web Services – An implementation of
JSR-181, an
+ annotation-driven programming model for
web services.</li>
</ul>
</section>
<section id="news">
@@ -36,7 +36,7 @@
<li>Beehive has a <a class="fork"
href="http://wiki.apache.org/beehive">wiki</a>.</li>
<li>Bugs or feature requests can be filed in
our issue tracking system: <a class="fork"
-
href="http://nagoya.apache.org/jira/secure/BrowseProject.jspa?id=10570">jira</a></li>
+
href="http://nagoya.apache.org/jira/secure/BrowseProject.jspa?id=10570">jira</a>.</li>
<li><a class="fork"
href="http://www.eclipse.org/pollinate/">Pollinate</a> is
an Eclipse technology project building
an IDE for the
Modified:
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/jpetstore.xml
URL:
http://svn.apache.org/viewcvs/incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/jpetstore.xml?view=diff&r1=158118&r2=158119
==============================================================================
---
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/jpetstore.xml
(original)
+++
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/jpetstore.xml
Fri Mar 18 10:31:07 2005
@@ -28,7 +28,7 @@
<p>Most of the Page Flows have associated Control files
(located
at:
<code>petstoreWeb/WEB-INF/src/org/apache/beehive/samples/petstore/controls/</code>).
- The Controls handle the backend data traffic
and encupsulate
+ The Controls handle the backend data traffic
and encapsulate
the operations of the web application, such as
retrieving data
from a database and handling user orders.</p>
</section>
@@ -128,7 +128,6 @@
<p>Open a command shell and confirm that you
have the following variables
have been set:</p>
<ul>
-
<li><code>BEEHIVE_HOME</code></li>
<li><code>ANT_HOME</code></li>
<li><code>JAVA_HOME</code></li>
<li><code>CATALINA_HOME</code></li>
@@ -153,33 +152,50 @@
beehive_projects
petstoreWeb</source>
</section>
- <section id="copy_runtime">
+ <section id="edit_properties_file"><title>Edit the
<code>build.properties</code> File</title>
+ <p>In this section you will edit the
<code>build.properties</code> file--the file
+ that sets the build-related properties
for your web application.</p>
+ <p>Open the file
<code>C:/beehive_projects/petstoreWeb/WEB-INF/src/build.properties</code>
+ in a text editor.</p>
+ <p>Edit the file so that the
<code>beehive.home</code> property points to the
+ top-level folder of your beehive
installation. For example, if you beehive installation
+ resides at
<code>C:/apache/apache-beehive-1.0</code>, then your
<code>build.properties</code> file
+ would appear as follows.</p>
+
<source>beehive.home=<strong>C:/apache/apache-beehive-1.0</strong>
+
+servlet-api.jar=${os.CATALINA_HOME}/common/lib/servlet-api.jar
+jsp-api.jar=${os.CATALINA_HOME}/common/lib/jsp-api.jar
+
+context.path=petstoreWeb</source>
+ </section>
+
+<!-- <section id="copy_runtime">
<title>To Copy the Runtime Resources</title>
<p>The Petstore application is distributed
without the Beehive runtime JAR
files it needs to run.
To copy the runtime JARs into the
Petstore app,
run the following Ant command. </p>
- <source>ant
- -f %BEEHIVE_HOME%\ant\webappRuntimeCore.xml
- -Dwebapp.dir=C:\beehive_projects\petstoreWeb
- deploy.beehive.webapp.runtime
+ <source>ant
+ -f C:\beehive_projects\petstoreWeb\WEB-INF\src\build.xml
+ deploy-beehive
-<strong>Copy and paste version:</strong>
-ant -f %BEEHIVE_HOME%\ant\webappRuntimeCore.xml
-Dwebapp.dir=C:\beehive_projects\petstoreWeb
deploy.beehive.webapp.runtime</source>
+<strong>Copy and Paste version:</strong>
+ant -f C:\beehive_projects\petstoreWeb\WEB-INF\src\build.xml
deploy-beehive</source>
<p>This will copy the Beehive webapp runtime
JARs into the following location.</p>
<source>
C:/beehive_projects/petstoreWeb/WEB-INF/lib</source>
- </section>
+ </section>-->
<section id="compile">
<title>To Compile the Petstore
Application</title>
<p>To compile the Petstore app, enter the
following Ant
command:</p>
- <source>ant
- -f %BEEHIVE_HOME%\ant\buildWebapp.xml
- -Dwebapp.dir=C:\beehive_projects\petstoreWeb
+<source>ant
+ -f C:\beehive_projects\petstoreWeb\WEB-INF\src\build.xml
+ clean
build
-
-<strong>Copy and paste version:</strong>
-ant -f %BEEHIVE_HOME%\ant\buildWebapp.xml
-Dwebapp.dir=C:\beehive_projects\petstoreWeb build</source>
+
+<strong>Copy and Paste version:</strong>
+ant -f C:\beehive_projects\petstoreWeb\WEB-INF\src\build.xml clean
build</source>
+
</section>
<section id="start_tomcat">
<title>To Start Tomcat</title>
@@ -187,7 +203,7 @@
<source>%CATALINA_HOME%\bin\startup.bat</source>
</section>
<section id="deploy">
- <title>To Deploying to Tomcat</title>
+ <title>To Deploy to Tomcat</title>
<p>To deploy the web application, click the following link. We
recommend that you open the
link in a new browser window. Each time you want to redeploy
the application,
simply refresh the browser.</p>
Added:
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/config/beehive-netui-config.xml
URL:
http://svn.apache.org/viewcvs/incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/config/beehive-netui-config.xml?view=auto&rev=158119
==============================================================================
---
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/config/beehive-netui-config.xml
(added)
+++
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/config/beehive-netui-config.xml
Fri Mar 18 10:31:07 2005
@@ -0,0 +1,786 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN"
"http://forrest.apache.org/dtd/document-v20.dtd">
+<document>
+ <header>
+ <title>Reference Documentation: beehive-netui-config.xml File</title>
+ </header>
+ <body>
+ <section id="desc">
+ <title>Description</title>
+ <p>
+ The <code>beehive-netui-config.xml</code> file configures the
runtime behavior of your Page Flow web
+ app.
+ </p>
+ <p>Use <code>beehive-netui-config.xml</code> to declare interceptor
classes, override the default handler classes,
+ etc.</p>
+ </section>
+ <section id="structure">
+ <title>General Structure</title>
+<source><a href="#netui-config"><netui-config></a>
+ <a href="#legacy-tag-support"><legacy-tag-support></a>
+ <a href="#expression-languages"><expression-languages></a>
+ <a href="#expression-language"><expression-language></a>
+ <a href="#default-language"><default-language></a>
+ <a href="#name"><name></a>
+ <a href="#factory-class"><factory-class></a>
+ <a href="#binding-contexts"><binding-contexts></a>
+ <a href="#binding-context"><binding-context></a>
+ <a href="#name"><name></a>
+ <a href="#factory-class"><factory-class></a>
+ <a href="#pageflow-action-interceptors"><pageflow-action-interceptors></a>
+ <a href="#global"><global></a>
+ <a href="#simple-action-interceptor"><simple-action-interceptor></a>
+ <a href="#intercept-path"><intercept-path></a>
+ <a href="#after-action"><after-action></a>
+ <a href="#action-interceptor"><action-interceptor></a>
+ <a href="#interceptor-class"><interceptor-class></a>
+ <a href="#custom-property"><custom-property></a>
+ <a href="#name"><name></a>
+ <a href="#value"><value></a>
+ <a href="#per-pageflow"><per-pageflow></a>
+ <a href="#pageflow-uri"><pageflow-uri></a>
+ <a href="#simple-action-interceptor"><simple-action-interceptor></a>
+ <a href="#intercept-path"><intercept-path></a>
+ <a href="#after-action"><after-action></a>
+ <a href="#action-interceptor"><action-interceptor></a>
+ <a href="#interceptor-class"><interceptor-class></a>
+ <a href="#custom-property"><custom-property></a>
+ <a href="#per-action"><per-action></a>
+ <a href="#action-name"><action-name></a>
+ <a href="#simple-action-interceptor"><simple-action-interceptor></a>
+ <a href="#intercept-path"><intercept-path></a>
+ <a href="#after-action"><after-action></a>
+ <a href="#action-interceptor"><action-interceptor></a>
+ <a href="#interceptor-class"><interceptor-class></a>
+ <a href="#custom-property"><custom-property></a>
+ <a href="#pageflow-handlers"><pageflow-handlers></a>
+ <a href="#login-handler-class"><login-handler-class></a>
+ <a
href="#forward-redirect-handler-class"><forward-redirect-handler-class></a>
+ <a
href="#reloadable-class-handler-class"><reloadable-class-handler-class></a>
+ <a href="#exceptions-handler-class"><exceptions-handler-class></a>
+ <a href="#pageflow-config"><pageflow-config></a>
+ <a href="#enable-renesting"><enable-renesting></a>
+ <a href="#max-forwards-per-request"><max-forwards-per-request></a>
+ <a href="#max-nesting-stack-depth"><max-nesting-stack-depth></a>
+ <a href="#ensure-secure-forwards"><ensure-secure-forwards></a>
+ <a
href="#throw-session-expired-exception"><throw-session-expired-exception></a>
+ <a href="#multipart-handler"><multipart-handler></a>
+ <a href="#module-config-locators"><module-config-locators></a>
+ <a href="#description"><description></a>
+ <a href="#locator-class"><locator-class></a>
+ <a href="#type-converters"><type-converters></a>
+ <a href="#type-converter"><type-converter></a>
+ <a href="#type"><type></a>
+ <a href="#converter-class"><converter-class></a>
+ <a href="#jsp-tag-config"><jsp-tag-config></a>
+ <a href="#doctype"><doctype></a>
+ <a href="#id-javascript"><id-javascript></a>
+ <a href="#tree-image-location"><tree-image-location></a>
+ <a href="#iterator-factories"><iterator-factories></a>
+ <a href="#iterator-factory"><iterator-factory></a>
+ <a href="#name"><name></a>
+ <a href="#factory-class"><factory-class></a>
+ <a href="#request-interceptors"><request-interceptors></a>
+ <a href="#interceptor-class"><interceptor-class></a></source>
+ </section>
+ <section id="elements">
+ <title>Elements</title>
+ <section
id="action-interceptor"><title><action-interceptor></title>
+ <p><strong>Syntax</strong></p>
+ <source><action-interceptor>
+ <interceptor-class> xsd:string </interceptor-class> [occurrences: 1]
+ <custom-property>
+ <name> xsd:string </name> [occurrences: 1]
+ <value> xsd:string </value> [occurrences: 1]
+ </custom-property> [occurrences: 0-*]
+</action-interceptor></source>
+ <p><strong>Parents:</strong></p>
+ <p><a href="#global"><global></a>,
+ <a
href="#per-pageflow"><per-pageflow></a>,
+ <a
href="#per-action"><per-action></a></p>
+ <p><strong>Children:</strong></p>
+ <p>
+ <a href="#interceptor-class"><interceptor-class></a>,
+ <a href="#custom-property"><custom-property></a></p>
+ </section>
+ <section id="action-name"><title><action-name></title>
+ <p><strong>Syntax</strong></p>
+ <source><action-name> xsd:string
<action-name> [occurrences: 1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#per-action"><per-action></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+ <section id="after-action"><title><after-action></title>
+ <p><strong>Syntax</strong></p>
+ <source> <after-action> xsd:boolean
<after-action> [occurrences: 0-1] </source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#intercept-path"><intercept-path></a>
+ </p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+
+ <section id="binding-context"><title><binding-context></title>
+ <p><strong>Syntax</strong></p>
+ <source><binding-context> [occurrences: 0-*]
+ <name> xsd:string </name> [occurrences: 1]
+ <factory-class> xsd:string </factory-class> [occurrences: 1]
+</binding-context></source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#binding-contexts"><binding-contexts></a></p>
+ <p><strong>Children:</strong></p>
+ <p><a href="#name"><name></a>,
+ <a
href="#factory-class"><factory-class></a></p></section>
+ <section id="binding-contexts"><title><binding-contexts></title>
+ <p><strong>Syntax</strong></p>
+ <source></binding-contexts> [occurrences:
0-1]
+ <binding-context> [occurrences: 0-*]
+ <name> xsd:string </name> [occurrences: 1]
+ <factory-class> xsd:string </factory-class> [occurrences: 1]
+ </binding-context>
+</binding-contexts></source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#expression-language"><expression-language></a></p>
+ <p><strong>Children:</strong></p>
+ <p><a
href="#binding-context"><binding-context></a></p></section>
+ <section id="converter-class"><title><converter-class></title>
+ <p><strong>Syntax</strong></p>
+ <source><converter-class> xsd:string
</converter-class> [occurrences: 1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#type-converter"><type-converter></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+ <section id="custom-property"><title><custom-property></title>
+ <p><strong>Syntax</strong></p>
+ <source><custom-property>
+ <name> xsd:string </name> [occurrences: 1]
+ <value> xsd:string </value> [occurrences: 1]
+</custom-property></source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#action-interceptor"><action-interceptor></a></p>
+ <p><strong>Children:</strong></p>
+ <p><a href="#name"><name></a>,
+ <a href="#value"><value></a></p></section>
+ <section id="default-language"><title><default-language></title>
+ <p><strong>Syntax</strong></p>
+ <source><default-language> xsd:string
</default-language> [occurrences: 1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#expression-language"><expression-language></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+ <section id="description"><title><description></title>
+ <p><strong>Syntax</strong></p>
+ <source><description> xsd:string
</description> [occurrences: 0-1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#module-config-locator"><module-config-locator></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+ <section id="doctype"><title><doctype></title>
+ <p><strong>Syntax</strong></p>
+ <source><doctype> [ html4-loose |
xhtml1-transitional ] </doctype> [occurrences: 0-1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#jsp-tag-config"><jsp-tag-config></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+ <section id="enable-renesting"><title><enable-renesting></title>
+ <p><strong>Syntax</strong></p>
+ <source><enable-renesting> xsd:boolean
</enable-renesting> [occurrences: 0-1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#pageflow-config"><pageflow-config></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+ <section
id="ensure-secure-forwards"><title><ensure-secure-forwards></title>
+ <p>For some server implementations, security checks
are executed only when an URL is called
+ directly, while security checks for
server forwards are ignored.</p>
+ <p>When this element is set to
<code>true</code>, server forwards are guaranteed to be checked.</p>
+ <p><strong>Syntax</strong></p>
+ <source><ensure-secure-forwards> xsd:boolean
</ensure-secure-forwards> [occurrences: 0-1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#pageflow-config"><pageflow-config></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+ <section
id="exceptions-handler-class"><title><exceptions-handler-class></title>
+ <p>Typically, exceptions thrown by the controller
class are delivered in a wrapper exception
+ class. The class named here, can be
used to unwrap these exceptions and handle
+ the underlying exception in a more
fine-grained manner.</p>
+ <p><strong>Syntax</strong></p>
+ <source><exceptions-handler-class>
xsd:string </exceptions-handler-class> [occurrences: 0-1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#pageflow-handlers"><pageflow-handlers></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+ <section
id="expression-language"><title><expression-language></title>
+ <p><strong>Syntax</strong></p>
+ <source> <expression-language>
[occurrences: 1-*]
+ <name> xsd:string </name> [occurrences: 1]
+ <factory-class> xsd:string </factory-class> [occurrences: 1]
+ <binding-contexts> binding-contexts </binding-contexts>
[occurrences: 0-1]
+ </expression-language></source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#pageflow-handlers"><pageflow-handlers></a></p>
+ <p><strong>Children:</strong></p>
+ <p><a href="#name"><name></a>,
+ <a
href="#factory-class"><factory-class></a>,
+ <a
href="#binding-contexts"><binding-contexts></a></p></section>
+ <section
id="expression-languages"><title><expression-languages></title>
+ <p><strong>Syntax</strong></p>
+ <source><expression-languages> [occurrences:
1]
+ <default-language> xsd:string </default-language> [occurrences: 1]
+ <expression-language> [occurrences: 1-*]
+ <name> xsd:string </name> [occurrences: 1]
+ <factory-class> xsd:string </factory-class> [occurrences: 1]
+ <binding-contexts> binding-contexts </binding-contexts>
[occurrences: 0-1]
+ </expression-language>
+</expression-languages></source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#netui-config"><netui-config></a></p>
+ <p><strong>Children:</strong></p>
+ <p><a
href="#default-language"><default-language></a>,
+ <a
href="#expression-language"><expression-language></a>
+ </p></section>
+ <section id="factory-class"><title><factory-class></title>
+ <p><strong>Syntax</strong></p>
+ <source><factory-class> xsd:string
</factory-class> [occurrences: 1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#binding-contexts"><binding-contexts></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+ <section
id="forward-redirect-handler-class"><title><forward-redirect-handler-class></title>
+ <p><strong>Syntax</strong></p>
+ <source><forward-redirect-handler-class>
xsd:string </forward-redirect-handler-class> [occurrences: 0-1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#pageflow-handlers"><pageflow-handlers></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+ <section id="global"><title><global></title>
+ <p><strong>Syntax</strong></p>
+ <source><global> [occurrences: 0-1]
+ <simple-action-interceptor>
+ <intercept-path> xsd:string </intercept-path> [occurrences: 1]
+ <after-action> xsd:boolean </after-action> [occurrences: 0-1]
+ </simple-action-interceptor> [occurrences: 0-*]
+ <action-interceptor>
+ <interceptor-class> xsd:string </interceptor-class> [occurrences: 1]
+ <custom-property>
+ <name> xsd:string </name> [occurrences: 1]
+ <value> xsd:string </value> [occurrences: 1]
+ </custom-property> [occurrences: 0-*]
+ </action-interceptor> [occurrences: 0-*]
+</global></source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#pageflow-action-interceptors"><pageflow-action-interceptors></a></p>
+ <p><strong>Children:</strong></p>
+ <p><a
href="#simple-action-inteceptor"><simple-action-inteceptor></a>,
+ <a
href="#action-inteceptor"><action-inteceptor></a></p></section>
+ <section id="id-javascript"><title><id-javascript></title>
+ <p><strong>Syntax</strong></p>
+ <source><id-javascript> [ default | legacy |
legacyOnly ] </id-javascript> [occurrences: 0-1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#jsp-tag-config"><jsp-tag-config></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+ <section
id="interceptor-class"><title><interceptor-class></title>
+ <p><strong>Syntax</strong></p>
+ <source><interceptor-class> xsd:string
<interceptor-class> [occurrences: 1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#jsp-tag-config"><jsp-tag-config></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+ <section id="intercept-path"><title><intercept-path></title>
+ <p><strong>Syntax</strong></p>
+ <source><intercept-path> xsd:string
</intercept-path> [occurrences: 1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#simple-action-interceptor"><simple-action-interceptor></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+
+ <section
id="iterator-factories"><title><iterator-factories></title>
+ <p><strong>Syntax</strong></p>
+ <source><iterator-factories>
+ <iterator-factory> [occurrences: 0-*]
+ ...
+ </iterator-factory>
+</iterator-factories></source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#netui-config"><netui-config></a></p>
+ <p><strong>Children:</strong></p>
+ <p><a
href="#iterator-factory"><iterator-factory></a></p></section>
+
+ <section id="iterator-factory"><title><iterator-factory></title>
+ <p><strong>Syntax</strong></p>
+ <source><iterator-factory> [occurrences: 0-*]
+ <name> xsd:string </name> [occurrences: 1]
+ <factory-class> xsd:string </factory-class> [occurrences: 1]
+</iterator-factory></source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#iterator-factorys"><iterator-factorys></a></p>
+ <p><strong>Children:</strong></p>
+ <p><a href="#name"><name></a>,
+ <a
href="#factory-class"><factory-class></a></p></section>
+
+ <section id="jsp-tag-config"><title><jsp-tag-config></title>
+ <p><strong>Syntax</strong></p>
+ <source><jsp-tag-config>
+ <doctype> xsd:string </doctype> [occurrences: 0-1]
+ <id-javascript> [ default | legacy | legacyOnly ] </id-javascript>
[occurrences: 0-1]
+ <tree-image-location> xsd:string </tree-image-location> [occurrences:
0-1]
+</jsp-tag-config></source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#netui-config"><netui-config></a></p>
+ <p><strong>Children:</strong></p>
+ <p><a href="#doctype"><doctype></a>,
+ <a
href="#id-javascript"><id-javascript></a>,
+ <a
href="#tree-image-location"><tree-image-location></a>,</p></section>
+
+ <section
id="legacy-tag-support"><title><legacy-tag-support></title>
+ <p><strong>Syntax</strong></p>
+ <source><legacy-tag-support> xsd:boolean
</legacy-tag-support> [occurrences: 0-1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#netui-config"><netui-config></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+
+ <section id="locator-class"><title><locator-class></title>
+ <p><strong>Syntax</strong></p>
+ <source><locator-class> xsd:string
</locator-class> [occurrences: 1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#module-config-locators"><module-config-locators></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+ <section
id="login-handler-class"><title><login-handler-class></title>
+ <p><strong>Syntax</strong></p>
+ <source><login-handler-class> xsd:string
</login-handler-class> [occurrences: 0-1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#pageflow-handlers"><pageflow-handlers></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+ <section
id="max-forwards-per-request"><title><max-forwards-per-request></title>
+ <p>If the number of server
+ forwards exceeds the given count, an error is written to the response
and no further
+ forwarding is excuted. This is mainly to prevent infinite loops of
server forwards.
+ To reproduce the error, invoke this action in a Page Flow:</p>
+<source>
+<![CDATA[ @Jpf.Action(
+ forwards={
+ @Jpf.Forward(name="self", path="overflow.do")
+ }
+ )
+ public Forward overflow()
+ {
+ return new Forward( "self" );
+ }]]></source>
+
+<p>If the jpf-forward-overflow-count parameter is omitted from the web.xml
file,
+the error will be written to the response after 50 server forwards within a
single request. ÃÂ
+</p>
+<p>When an application is in development, a descriptive error is sent; for
deployed applications, a 500 response is sent.</p>
+ <p><strong>Syntax</strong></p>
+ <source><max-forwards-per-request> xsd:int
</max-forwards-per-request> [occurrences: 0-1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#pageflow-config"><pageflow-config></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p>
+</section>
+
+ <section
id="max-nesting-stack-depth"><title><max-nesting-stack-depth></title>
+ <p>
+ This parameter sets the maximum size of the Page Flow nesting stack.
+ If Page Flows are repeatedly nested until the stack exceeds the
specified value,
+ an error is written to the response object and any further nesting is
not allowed.
+ This helps prevent the nesting stack from consuming large amounts of
resources.</p>
+<p>When an application is in development, a descriptive error is sent; for
deployed applications, a 500 response is sent.</p>
+ <p><strong>Syntax</strong></p>
+ <source><max-nesting-stack-depth> xsd:int
</max-nesting-stack-depth> [occurrences: 0-1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#pageflow-config"><pageflow-config></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p>
+ </section>
+
+ <section
id="module-config-locator"><title><module-config-locator></title>
+ <p><strong>Syntax</strong></p>
+ <source><module-config-locator>
[occurrences: 0-*]
+ <description> xsd:string </description> [occurrences: 0-1]
+ <locator-class> xsd:string </locator-class> [occurrences: 1]
+</module-config-locator></source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#module-config-locators"><module-config-locators></a></p>
+ <p><strong>Children:</strong></p>
+ <p><a href="#description"><description></a>,
+ <a
href="#locator-class"><locator-class></a></p></section>
+
+ <section
id="module-config-locators"><title><module-config-locators></title>
+ <p>Names a class or group of classes that know the
location of the web application's
+ Struts configuration files. By default these
configuation files are saved to
+
<code>WEB-INF/.pageflow-struts-generated/</code>. But, in cases where this
default location
+ has been overridden by a custom compilation
process, use <code><module-config-locators></code> to point to a Java class
that knows the
+ new location. </p>
+ <p><strong>Syntax</strong></p>
+ <source><module-config-locators>
[occurrences: 0-1]
+ <module-config-locator> [occurrences: 0-*]
+ <description> xsd:string </description> [occurrences: 0-1]
+ <locator-class> xsd:string </locator-class> [occurrences: 1]
+ </module-config-locator>
+</module-config-locators></source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#pageflow-config"><pageflow-config></a></p>
+ <p><strong>Children:</strong></p>
+ <p><a
href="#module-config-locator"><module-config-locator></a></p></section>
+
+ <section
id="multipart-handler"><title><multipart-handler></title>
+ <p>By default multi-part file uploading is disabled
for page flow web applications.
+ To turn it on, you must (1) explicitly
set this element to <code>memory</code>
+ or <code>disk</code>, or (2) decorate a
given controller class with
+ the @Jpf.MultipartHandler annotation.
Doing (1) will enable file uploading across
+ the entire web applcation, doing (2)
enables file uploading on a
+ controller-by-controller basis.</p>
+ <p><strong>Syntax</strong></p>
+ <source><multipart-handler> [ disabled |
memory | disk ] </multipart-handler> [occurrences: 0-1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#pageflow-config"><pageflow-config></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p>
+ <p>
+ To disable file upload, set the value to "none".
+ [todo: other values include memory, ?, ...]</p>
+ </section>
+
+ <section id="name"><title><name></title>
+ <p><strong>Syntax</strong></p>
+ <source><name> xsd:string </name>
[occurrences: 1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#expression-language"><expression-language></a>,
+ <a
href="#iterator-factory"><iterator-factory></a>,
+ <a
href="#binding-context"><binding-context></a>,
+ <a
href="#custom-property"><custom-property></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+
+ <section id="netui-config">
+ <title><netui-config></title>
+ <p>
+ The top-level element in the <code>beehive-netui-config.xml</code>
file.
+ ÃÂ </p>
+ <p><strong>Syntax</strong></p>
+ <source><netui-config>
+ <legacy-tag-support> xsd:boolean </legacy-tag-support> [occurrences:
0-1]
+ <expression-languages> ... </expression-languages> [occurrences: 1]
+ <pageflow-action-interceptors> ... </pageflow-action-interceptors>
[occurrences: 0-1]
+ <pageflow-handlers> ... </pageflow-handlers> [occurrences: 0-1]
+ <pageflow-config> ... </pageflow-config> [occurrences: 0-1]
+ <type-converters> ... </type-converters> [occurrences: 0-1]
+ <jsp-tag-config> ... </jsp-tag-config> [occurrences: 0-1]
+ <iterator-factories> ... </iterator-factories> [occurrences: 0-1]
+ <request-interceptors> ... </request-interceptors> [occurrences: 0-1]
+</netui-config></source>
+ <p><strong>Parents:</strong></p>
+ <p></p>
+ <p><strong>Children:</strong></p>
+ <p> <a
href="#legacy-tag-support"><legacy-tag-support></a>,
+ <a href="#expression-languages"><expression-languages></a>,
+ <a
href="#pageflow-action-interceptors"><pageflow-action-interceptors></a>,
+ <a href="#pageflow-handlers"><pageflow-handlers></a>,
+ <a href="#pageflow-config"><pageflow-config></a>,
+ <a href="#type-converters"><type-converters></a>,
+ <a href="#jsp-tag-config"><jsp-tag-config></a>,
+ <a href="#iterator-factories"><iterator-factories></a>,
+ <a href="#request-interceptors"><request-interceptors></a></p>
+ </section>
+
+ <section id="pageflow-action-interceptors">
+ <title><pageflow-action-interceptors></title>
+ <p>If you want to be notified before (or after) every action
that's run in the webapp,
+you configure a <pageflow-action-interceptor> group.
+A simple example of this would be a monitoring infrastructure
+that keeps track of the number of actions raised. To keep track of the number
of actions raised,
+register an interceptor
+that runs the counting code before going to any action. A more complex example
+is an interceptor that *redirects* you to another page flow before allowing
you
+to go to the current one; for instance, it might take you to a nested page
flow
+that asks you to fill out a "satisfaction survey" before sending you to the
+destination page flow. </p>
+<p>The action-intercepting class is run twice: <em>both</em> before
<em>and</em> after the execution of the
+ action.</p>
+ <p><strong>Also see:</strong></p>
+ <p><a
href="../../apidocs/classref_pageflows/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptor.html">Interface
org.apache.beehive.netui.pageflow.interceptor.ActionInterceptor</a></p>
+ <p><strong>Syntax</strong></p>
+ <source><pageflow-action-interceptors>
+ <global> [occurrences: 0-1]
+ <simple-action-interceptor> ...
</simple-action-interceptor> [occurrences: 0-*]
+ <action-interceptor> ... </action-interceptor>
[occurrences: 0-*]
+ </global>
+ <per-pageflow> [occurrences: 0-*]
+ <pageflow-uri> xsd:string </pageflow-uri> [occurrences: 1]
+ <simple-action-interceptor> ...
</simple-action-interceptor> [occurrences: 0-*]
+ <action-interceptor> ... </action-interceptor>
[occurrences: 0-*]
+ <per-action> [occurrences: 0-*]
+ <action-name> xsd:string </action-name>
[occurrences: 1]
+ <simple-action-interceptor> ...
</simple-action-interceptor> [occurrences: 0-*]
+ <action-interceptor> ... </action-interceptor>
[occurrences: 0-*]
+ </per-action>
+ </per-pageflow>
+</pageflow-action-interceptors></source>
+ <p><strong>Parents</strong></p>
+ <p><a
href="#netui-config"><netui-config></a></p>
+ <p><strong>Children</strong></p>
+ <p><a href="#global"><global></a>, <a
href="#per-pageflow"><per-pageflow></a> </p>
+ </section>
+
+ <section id="pageflow-config">
+ <title><pageflow-config></title>
+ <p><strong>Syntax</strong></p>
+ <source><pageflow-config>
+ <enable-renesting> xsd:boolean </enable-renesting> [occurrences:
0-1]
+ <max-forwards-per-request> xsd:int </max-forwards-per-request>
[occurrences: 0-1]
+ <max-nesting-stack-depth> xsd:int </max-nesting-stack-depth>
[occurrences: 0-1]
+ <ensure-secure-forwards> xsd:boolean </ensure-secure-forwards>
[occurrences: 0-1]
+ <throw-session-expired-exception> xsd:boolean
</throw-session-expired-exception> [occurrences: 0-1]
+ <multipart-handler> [ disabled | memory | disk ]
</multipart-handler> [occurrences: 0-1]
+ <module-config-locators> ... </module-config-locators>
[occurrences: 0-1]
+</pageflow-config></source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#netui-config"><netui-config></a></p>
+ <p><strong>Children:</strong></p>
+ <p><a
href="#enable-renesting"><enable-renesting></a>,
+ <a
href="#max-forwards-per-request"><max-forwards-per-request></a>,
+ <a
href="#max-nesting-stack-depth"><max-nesting-stack-depth></a>,
+ <a
href="#ensure-secure-forwards"><ensure-secure-forwards></a>,
+ <a
href="#throw-session-expired-exception"><throw-session-expired-exception></a>,
+ <a
href="#multipart-handler"><multipart-handler></a>,
+ <a
href="#module-config-locators"><module-config-locators></a>,
+ </p>
+ <p>
+Configures the page flow
+runtime across the webapp. If you want to disable file-upload, for instance,
+you set the multipart-handler to "none". There will be more settings here
soon.
+ ÃÂ </p>
+ </section>
+
+ <section id="pageflow-handlers">
+ <title><pageflow-handlers></title>
+ <p>
+These settings let you override base framework behavior.
+A good example is the LoginHandler. By default, we use standard Servlet
+APIs to see if you're logged in, and we use some server-specific APIs to
+actually log you in when login() is called inside a page flow.
+If you want to replace this behavior with your own login scheme
+(which may look at a User database table for login information),
+you can provide your own LoginHandler that defines methods like login() and
isUserInRole().
+</p>
+
+ <p><strong>Syntax</strong></p>
+ <source><pageflow-handlers>
+ <login-handler-class> xsd:string </login-handler-class>
[occurrences: 0-1]
+ <forward-redirect-handler-class> xsd:string
</forward-redirect-handler-class> [occurrences: 0-1]
+ <reloadable-class-handler-class> xsd:string
</reloadable-class-handler-class> [occurrences: 0-1]
+ <exceptions-handler-class> xsd:string </exceptions-handler-class>
[occurrences: 0-1]
+</pageflow-handlers></source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#netui-config"><netui-config></a></p>
+ <p><strong>Children:</strong></p>
+ <p><a
href="#login-handler-class"><login-handler-class></a>,
+ <a
href="#forward-redirect-handler-class"><forward-redirect-handler-class></a>,
+ <a
href="#reloadable-class-handler-class"><reloadable-class-handler-class></a>,
+ <a
href="#exceptions-handler-class"><exceptions-handler-class></a></p>
+ </section>
+
+ <section id="pageflow-uri"><title><pageflow-uri></title>
+ <p><strong>Syntax</strong></p>
+ <source><pageflow-uri> xsd:string
</pageflow-uri> [occurrences: 1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#per-pageflow"><per-pageflow></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+
+ <section id="per-action"><title><per-action></title>
+ <p><strong>Syntax</strong></p>
+ <source><per-action> [occurrences: 0-*]
+ <action-name> xsd:string </action-name> [occurrences: 1]
+ <simple-action-interceptor> netui:simple-action-interceptor
</simple-action-interceptor> [occurrences: 0-*]
+ <action-interceptor> netui:action-interceptor
</action-interceptor> [occurrences: 0-*]
+</per-action></source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#global"><global></a></p>
+ <p><strong>Children:</strong></p>
+ <p><a
href="#action-name"><action-name></a>,
+ <a
href="#simple-action-interceptor"><simple-action-interceptor></a>,
+ <a
href="#action-interceptor"><action-interceptor></a></p></section>
+
+ <section id="per-pageflow"><title><per-pageflow></title>
+ <p><strong>Syntax</strong></p>
+ <source><per-pageflow> [occurrences: 0-*]
+ <pageflow-uri> xsd:string </pageflow-uri> [occurrences: 1]
+ <simple-action-interceptor> netui:simple-action-interceptor
</simple-action-interceptor> [occurrences: 0-*]
+ <action-interceptor> netui:action-interceptor
</action-interceptor> [occurrences: 0-*]
+ <per-action> [occurrences: 0-*]
+ <action-name> xsd:string </action-name> [occurrences: 1]
+ <simple-action-interceptor> netui:simple-action-interceptor
</simple-action-interceptor> [occurrences: 0-*]
+ <action-interceptor> netui:action-interceptor
</action-interceptor> [occurrences: 0-*]
+ </per-action>
+</per-pageflow></source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#global"><global></a></p>
+ <p><strong>Children:</strong></p>
+ <p><a
href="#pageflow-uri"><pageflow-uri></a>,
+ <a
href="#simple-action-interceptor"><simple-action-interceptor></a>,
+ <a
href="#action-interceptor"><action-interceptor></a>,
+ <a
href="#per-action"><per-action></a></p></section>
+
+ <section
id="reloadable-class-handler-class"><title><reloadable-class-handler-class></title>
+ <p><strong>Syntax</strong></p>
+ <source><reloadable-class-handler-class>
xsd:string </reloadable-class-handler-class> [occurrences: 0-1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#pageflow-handlers"><pageflow-handlers></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+
+ <section id="request-interceptors">
+ <title><request-interceptors></title>
+ <p><strong>Syntax</strong></p>
+ <source><request-interceptors>
+ <interceptor-class> xsd:string </interceptor-class> [occurrences: 1-*]
+</request-interceptors></source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#netui-config"><netui-config></a></p>
+ <p><strong>Children:</strong></p>
+ <p><a
href="#interceptor-class"><interceptor-class></a></p></section>
+
+ <section
id="simple-action-interceptor"><title><simple-action-interceptor></title>
+ <p><strong>Syntax</strong></p>
+ <source><simple-action-interceptor>
+ <intercept-path> xsd:string </intercept-path> [occurrences: 1]
+ <after-action> xsd:boolean </after-action> [occurrences: 0-1]
+</simple-action-interceptor></source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#netui-config"><netui-config></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+
+ <section
id="throw-session-expired-exception"><title><throw-session-expired-exception></title>
+ <p><strong>Syntax</strong></p>
+ <source><throw-session-expired-exception>
xsd:boolean </throw-session-expired-exception> [occurrences: 0-1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#pageflow-config"><pageflow-config></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+
+ <section
id="tree-image-location"><title><tree-image-location></title>
+ <p><strong>Syntax</strong></p>
+ <source><tree-image-location> xsd:string
</tree-image-location> [occurrences: 0-1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#jsp-tag-config"><jsp-tag-config></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+
+ <section id="type"><title><type></title>
+ <p><strong>Syntax</strong></p>
+ <source><type> xsd:string </type>
[occurrences: 1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#type-converter"><type-converter></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+
+ <section id="type-converter"><title><type-converter></title>
+ <p><strong>Syntax</strong></p>
+ <source><type-converter> [occurrences: 0-*]
+ <type> xsd:string </type> [occurrences: 1]
+ <converter-class> xsd:string </converter-class> [occurrences: 1]
+</type-converter></source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#type-converters"><type-converters></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+
+ <section id="type-converters"><title><type-converters></title>
+ <p><strong>Syntax</strong></p>
+ <source><type-converters>
+ <type-converter> [occurrences: 0-*]
+ <type> xsd:string </type> [occurrences: 1]
+ <converter-class> xsd:string </converter-class> [occurrences: 1]
+ </type-converter>
+</type-converters></source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#netui-config"><netui-config></a></p>
+ <p><strong>Children:</strong></p>
+ <p><a
href="#type-converter"><type-converter></a></p></section>
+
+ <section id="value"><title><value></title>
+ <p><strong>Syntax</strong></p>
+ <source><value> xsd:string </value>
[occurrences: 1]</source>
+ <p><strong>Parents:</strong></p>
+ <p><a
href="#custom-property"><custom-property></a></p>
+ <p><strong>Children:</strong></p>
+ <p>none</p></section>
+ </section>
+ <section>
+ <title>Example</title>
+ <p>
+ Use the following example <code>netui-config.xsd</code> file as a
template.</p>
+ <source><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
+
+<netui-config xmlns="http://beehive.apache.org/netui/2004/server/config">
+
+ <legacy-tag-support>false</legacy-tag-support>
+
+ <expression-languages>
+ <default-language>netuiel</default-language>
+ <expression-language>
+ <name>netuiel</name>
+
<factory-class>org.apache.beehive.netui.script.el.ExpressionEvaluatorImpl$NetUIELEngineFactory</factory-class>
+ </expression-language>
+ </expression-languages>
+
+ <pageflow-action-interceptors>
+ <global>
+ <before-action>
+ <action-interceptor>
+
<interceptor-class>miniTests.interceptors.InterceptorsController$BeforeInterceptor</interceptor-class>
+ </action-interceptor>
+ <action-interceptor>
+
<interceptor-class>miniTests.interceptors.InterceptorsController$BeforeInterceptor2</interceptor-class>
+ </action-interceptor>
+ </before-action>
+ <after-action>
+ <action-interceptor>
+
<interceptor-class>miniTests.interceptors.InterceptorsController$AfterInterceptor</interceptor-class>
+ </action-interceptor>
+ <action-interceptor>
+
<interceptor-class>miniTests.interceptors.InterceptorsController$AfterInterceptor2</interceptor-class>
+ </action-interceptor>
+ </after-action>
+ </global>
+ </pageflow-action-interceptors>
+
+ <pageflow-handlers>
+
<forward-redirect-handler-class>pageFlowCore.forwards.Controller$Redirector</forward-redirect-handler-class>
+ </pageflow-handlers>
+
+ <pageflow-config>
+ <multipart-handler>memory</multipart-handler>
+ <module-config-locators>
+ <module-config-locator>
+ <description>For /miniTests/moduleConfigLocator.</description>
+ <locator-class>moduleConfigLocator.Locator1</locator-class>
+ </module-config-locator>
+ </module-config-locators>
+ </pageflow-config>
+
+ <jsp-tag-config>
+ <doctype>html4-loose</doctype>
+ <id-javascript>Legacy-JavaScript-Only</id-javascript>
+ </jsp-tag-config>
+
+ <iterator-factories>
+ </iterator-factories>
+
+</netui-config>
+
+ ]]></source>
+ </section>
+ <section>
+ <title>Related Topics</title>
+<p><a
href="../../apidocs/classref_pageflows/org/apache/beehive/netui/util/config/ConfigUtil.html">Class
org.apache.beehive.netui.util.config.ConfigUtil</a></p>
+<p><a
href="../../apidocs/classref_pageflows/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptor.html">Interface
org.apache.beehive.netui.pageflow.interceptor.ActionInterceptor</a></p>
+ </section>
+
+ </body>
+</document>
Propchange:
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/config/beehive-netui-config.xml
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/guide.xml
URL:
http://svn.apache.org/viewcvs/incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/guide.xml?view=diff&r1=158118&r2=158119
==============================================================================
---
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/guide.xml
(original)
+++
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/guide.xml
Fri Mar 18 10:31:07 2005
@@ -33,7 +33,7 @@
<p>
<strong>How the Code Works</strong>
</p>
- <p>Methods in the Controller file are invoked through specially
designed JSP tags, called "netui" tags. These tags appear with the prefix
<strong><netui:></strong>. (Tags with the <netui:> reference the
netui-tags-html.tld tag library.) Neuti tags like <neuti:anchor>,
<netui:button>, and <netui:imageButton> are all capable of invoking
methods in the Controller file. The method to invoke is specified by the tag's
<code>action</code> attribute. For example, the following <netui:anchor>
tag invokes the <code>toPageB</code> method by referencing the method in it's
<code>action</code> attribute.</p>
+ <p>Methods in the Controller file are invoked through specially
designed JSP tags, called "netui" tags. These tags appear with the prefix
<strong><netui:></strong>. (Tags with the <netui:> reference the
netui-tags-html.tld tag library.) Neuti tags like <neuti:anchor>,
<netui:button>, and <netui:imageButton> are all capable of invoking
methods in the Controller file. The method to invoke is specified by the tag's
<code>action</code> attribute. For example, the following <netui:anchor>
tag invokes the <code>navigate</code> method by referencing the method in it's
<code>action</code> attribute.</p>
<p>
<strong>pageA.jsp</strong>
</p>
@@ -42,10 +42,10 @@
<%@ taglib uri="netui-tags-html.tld" prefix="netui"%>
...
<!-- Render a link that invokes the toPageB method -->
- <netui:anchor <strong>action="toPageB"</strong>>Link to
page_B.jsp</netui:anchor>
+ <netui:anchor <strong>action="navigate"</strong>>Link to
page_B.jsp</netui:anchor>
</source>
<!-- <p>(When pageA.jsp is viewed in a broswer, the
<netui:anchor> tag is rendered as ordinary HTML, with associated JavaScript
which handles the invocation.... [todo] )</p>-->
- <p>Suppose the link above is clicked. When clicked, the following
method, <code>toPageB</code>, is invoked.</p>
+ <p>Suppose the link above is clicked. When clicked, the following
method, <code>navigate</code>, is invoked.</p>
<p>The method below, when invoked, navigates the user to
pageB.jsp. The code within the method body is very simple: upon invocation,
the method immediately returns a Forward object, with the String parameter
"success". The code <em>above</em> the method does the real work of
determining the navigational target. The code above the method consists of two
metadata annotations. "Metadata" means that the annotation configures or sets
a property on some part of the Java code. In the example below, the
@Jpf.Action annotation makes the method available to invocation (by netui
tags), while the @Jpf.Forward annotation configures the navigation information.
In the this case the method it configured to navigate to pageB.jsp whenever it
is invoked. </p>
<p>
<strong>Controller.jpf</strong>
@@ -58,7 +58,7 @@
@Jpf.Forward(name = "<strong>success</strong>", path =
"<strong>pageB.jsp</strong>")
}
)
- protected Forward toPageB()
+ protected Forward navigate()
{
return new Forward("success");
}</source>
Modified:
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/index.xml
URL:
http://svn.apache.org/viewcvs/incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/index.xml?view=diff&r1=158118&r2=158119
==============================================================================
---
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/index.xml
(original)
+++
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/index.xml
Fri Mar 18 10:31:07 2005
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN"
"http://forrest.apache.org/dtd/document-v12.dtd">
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN"
"http://forrest.apache.org/dtd/document-v20.dtd">
<document>
<header>
<title>Introduction to Beehive Page Flows</title>
Added:
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_databinding.xml
URL:
http://svn.apache.org/viewcvs/incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_databinding.xml?view=auto&rev=158119
==============================================================================
---
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_databinding.xml
(added)
+++
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_databinding.xml
Fri Mar 18 10:31:07 2005
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN"
"http://forrest.apache.org/dtd/document-v20.dtd">
+<document>
+ <header>
+ <title>Databinding: Passing Data Between Controller Classes and
JSP Pages</title>
+ </header>
+ <body>
+ <section id="intro">
+ <title>Introduction</title>
+ <p>Your web application's presentation layer (JSP
pages) and processing layer
+ (Controller classes) are bound together through
the process of <em>databinding</em>.
+ There are numerous databinding contexts
available, including all
+ of the JSP 2.0 implicit objects as well as
other contexts peculiar to
+ page flow apps.</p>
+ <p>Databinding syntax uses the JSP 2.0 Expression
Language. For a quick summary of the
+ JSP 2.0 EL see <a
href="http://www.onjava.com/pub/a/onjava/2003/11/05/jsp.html" class="fork">JSP
2.0: The New Deal, Part 1</a>.</p>
+ <p>It is important to note that the databinding
contexts form a two-way street between the
+ presentation and processing layers of a web
application. Databinding contexts not
+ only pass data from the processing layer to the
presentation layer, some contexts
+ can pass data in the opposite direction from
the presentation layer to the processing layer.
+ </p>
+ <p>The one-way, read-only contexts are: requestScope,
url, sessionScope, container, pageContext, bundle, pageInput</p>
+ <p>The two-way, read-write contexts are: pageFlow,
globalApp, actionForm</p>
+ </section>
+ <section id="contexts">
+ <title>Summary of Binding Contexts</title>
+ <table>
+ <tr>
+ <th>Context Name</th>
+ <th>Object the Context References</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td>
+ <code>actionForm</code>
+ </td>
+ <td>The current form bean (the form
bean named in the
+ current
<code><netui:form></code> tag)</td>
+ <td>Individual fields defined in the
form bean can be
+ referenced. Values are
read-write.</td>
+ </tr>
+ <tr>
+ <td>
+ <code>applicationScope</code>
+ </td>
+ <td>an attribute map on the application
object (a JSP 2.0 implicit object)</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>
+ <code>bundle</code>
+ </td>
+ <td>Properties defined in a message
resource file</td>
+ <td>On a JSP page, declare the message
resource file using
+ the
<netui-data:declareBundle> tag. <source><netui-data:declareBundle
name="myBundle" bundlePath="properties.bundle1"/></source>
+ Reference individual properties
in the file using the
+ <code>bundle</code> databinding
context. <source><netui:span
value="${bundle.myBundle.message1}"/></source></td>
+ </tr>
+ <tr>
+ <td>
+ <code>container</code>
+ </td>
+ <td>The data set referenced in the
current
+ <netui-data:dataGrid> or
<netui-data:repeater>
+ tag</td>
+ <td>In the example below, the
<code>container</code>
+ context refers to the object
named in the
+
<code><netui-data:dataGrid></code>'s
+ <code>dataSource</code>
<source><netui-data:dataGrid <strong>dataSource="pageScope.stocks"</strong>
name="portfolio">
+ <netui-data:rows>
+ <netui-data:spanCell
value="${<strong>container.item.symbol</strong>}"/>
+ <netui-data:spanCell
value="${<strong>container.item.price</strong>}"/>
+ </netui-data:rows>
+</netui-data:dataGrid></source> See below for detailed
+ information on
<code>container</code>'s
+ sub-contexts.</td>
+ </tr>
+ <tr>
+ <td>
+ <code>pageFlow</code>
+ </td>
+ <td>The current Controller class</td>
+ <td>Public members of the current
Controller class can be referenced and written to.
+ Assume that the Controller
class contains the following public member String.
+ <source>public String someText
= "This is some text"</source>
+ Then that member can be
referenced from any JSP page in the page flow.
+ <source><netui:span
value="${pageFlow.someText}"/></source></td>
+ </tr>
+ <tr>
+ <td>
+ <code>pageInput</code>
+ </td>
+ <td>an attribute map on the current
Forward object</td>
+ <td>Page input data can be added to the
Forward object
+ using the
<code>addActionOutput(String, Object)
+ method.</code>. <source>Forward
forward = new Forward("success");
+forward.addActionOutput("name", someNameData);</source> The data can be
retrieved on
+ the JSP page using the
<code>pageInput</code>
+ databinding context.
<source><netui:span value="${pageInput.name}"/></source></td>
+ </tr>
+ <tr>
+ <td>
+ <code>pageScope</code>
+ </td>
+ <td>an attribute map on the current JSP
page (a JSP 2.0 implicit object)</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>
+ <code>requestScope</code>
+ </td>
+ <td>an attribute map on the request
object (a JSP 2.0 implicit object)</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>
+ <code>sessionScope</code>
+ </td>
+ <td>an attribute map on the session
object (a JSP 2.0 implicit object)</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>
+ <code>sharedFlow</code>
+ </td>
+ <td>Attribute map of all of the shared
flows in the web application</td>
+ <td>Provided that the shared flow is
declared in the Controller file
+ <source>@Jpf.Controller(
+ sharedFlowRefs={
+ @Jpf.SharedFlowRef(name="mySharedFlow",
type=sharedFlows.SharedFlow.class)
+ }
+)
+public class Controller extends PageFlowController
+</source>
+You can access the members of the shared flow through the
<code>sharedFlow</code> context.
+<source><netui:span
value="${sharedFlow.mySharedFlow.someProperty}"/></source></td>
+ </tr>
+ <tr>
+ <td>
+ <code>url</code>
+ </td>
+ <td>Query parameters on the current
JSP's URL.</td>
+ <td>Query parameters that are part of
the URL can be
+ referenced. Values are read
only.</td>
+ </tr>
+ </table>
+ </section>
+ <section>
+ <title>Individual Binding Contexts</title>
+ <section id="actionForm">
+ <title>
+ <code>actionForm</code>
+ </title>
+ </section>
+ <section id="application">
+ <title>
+ <code>applicationScope</code>
+ </title>
+ </section>
+ <section id="bundle">
+ <title>
+ <code>bundle</code>
+ </title>
+ </section>
+ <section id="container">
+ <title>
+ <code>container</code>
+ </title>
+ </section>
+ <section id="pageInput">
+ <title>
+ <code>pageInput</code>
+ </title>
+ </section>
+ <section id="request">
+ <title>
+ <code>requestScope</code>
+ </title>
+ </section>
+ <section id="session">
+ <title>
+ <code>sessionScope</code>
+ </title>
+ </section>
+ <section id="sharedFlow">
+ <title>
+ <code>sharedFlow</code>
+ </title>
+ <p>SharedFlow properties can be accessed from a
JSP using the scope sharedFlow, for example,</p>
+
+ <source>dataSource="sharedFlow.specificSharedFlow.someProperty"</source>
+
+<p>Actions declared in a SharedFlow are accessed by specifying a fully
qualified action</p>
+
+ <source>action="specificSharedFlow.someAction"</source>
+
+ <p>where specificSharedFlow was the name given to the sharedFlow in
the JPF annotation</p>
+ </section>
+ <section id="url">
+ <title>
+ <code>url</code>
+ </title>
+ </section>
+ </section>
+ <section id="related"><title>Related Topics</title>
+ <p>For more information on the JSP 2.0 Expression
Language, see <a href="http://www.onjava.com/pub/a/onjava/2003/11/05/jsp.html"
class="fork">JSP 2.0: The New Deal, Part 1</a></p></section>
+ </body>
+</document>
\ No newline at end of file
Propchange:
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_databinding.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added:
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_datagrid.xml
URL:
http://svn.apache.org/viewcvs/incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_datagrid.xml?view=auto&rev=158119
==============================================================================
---
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_datagrid.xml
(added)
+++
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_datagrid.xml
Fri Mar 18 10:31:07 2005
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN"
"http://forrest.apache.org/dtd/document-v20.dtd">
+<document>
+ <header>
+ <title>Displaying Results Sets with Data Grids</title>
+ </header>
+ <body>
+ <section id="database_driven">
+ <title>Database Driven Web Applications</title>
+ <p><img src="images/pageflow_database_app_1.png"
alt="pageflow_database"/></p>
+ </section>
+ <section id="pager">
+ <title>The <netui-data:pager> Tag</title>
+ </section>
+ <section id="filtering">
+ <title>Filtering a Data Grid</title>
+ </section>
+ <section id="sorting">
+ <title>Sorting a Data Grid</title>
+ </section>
+ <section>
+ <title>Sample Code</title>
+ <p><strong>Controller.jpf</strong></p>
+ <source>import java.sql.ResultSet;
+import javax.servlet.http.HttpSession;
+import org.apache.beehive.netui.pageflow.Forward;
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+
+// Set up annotations
[EMAIL PROTECTED](
+ simpleActions={
+ @Jpf.SimpleAction(name="begin", path="index.jsp")
+ }
+ , sharedFlowRefs={ @Jpf.SharedFlowRef(name="shared",
type=shared.SharedFlow.class) }
+)
+public class Controller
+ extends PageFlowController
+{
+ // Shared Flow - handle common exceptions, etc. here
+ @Jpf.SharedFlowField(name="shared")
+ private shared.SharedFlow sharedFlow;
+
+ // Controls
+ @org.apache.beehive.controls.api.bean.Control
+ private controls.data.carDB carDB;
+
+ // Objects to pass to page flow
+ public ResultSet rs;
+
+ // Actions
+ @Jpf.Action(
+ forwards = {
+ @Jpf.Forward(name = "success", path = "list.jsp")
+ }
+ )
+ public Forward processData() throws Exception
+ {
+ int nCount = carDB.countCars();
+ getRequest().setAttribute("cars", nCount);
+ rs = carDB.getInventoryRS();
+ return new Forward("success");
+ }
+
+ @Jpf.Action(
+ forwards = {
+ @Jpf.Forward(name = "success", path = "item.jsp")
+ })
+ protected Forward item() throws Exception
+ {
+ int nSKU = Integer.parseInt(getRequest().getParameter("sku"));
+ rs = carDB.getItem(nSKU);
+ return new Forward("success");
+ }
+
+ // Callback that is invoked when this controller instance is created.
+ protected void onCreate() {}
+
+ // Callback that is invoked when this controller instance is destroyed.
+ protected void onDestroy(HttpSession session) {}
+}</source>
+ <p><strong>list.jsp</strong></p>
+ <source><%@ taglib
uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui" %>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0"
prefix="netui-template"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-databinding-1.0"
prefix="netui-data"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+<netui-template:template templatePage="/resources/jsp/template.jsp">
+ <netui-template:setAttribute value="WAS - Inventory" name="title"/>
+ <netui-template:section name="bodySection">
+ <blockquote>
+ <span class="subtitle">Inventory Section</span><br>
+
+ <netui-data:dataGrid dataSource="pageFlow.rs"
name="inventoryGrid" styleClassPrefix="gridStyle">
+ <netui-data:configurePager pageSize="4"
pagerFormat="prevNext" pageAction="processData.do" disableDefaultPager="true"/>
+ <netui-data:caption>
+ We currently have ${requestScope.cars} vehicles in our
inventory.
+ </netui-data:caption>
+
+ <netui-data:header>
+ <netui-data:headerCell headerText="Details"/>
+ <netui-data:headerCell headerText="Make"/>
+ <netui-data:headerCell headerText="Model" />
+ <netui-data:headerCell headerText="Description"/>
+ <netui-data:headerCell headerText="Inventory
Number"/>
+ <netui-data:headerCell headerText="Price"/>
+ <netui-data:headerCell headerText="Status"/>
+ </netui-data:header>
+ <netui-data:rows>
+ <netui-data:imageAnchorCell
src="${pageContext.request.contextPath}/resources/images/${container.item.carid}sm.jpg"
action="item" alt="Details for this vehicle" border="0">
+ <netui:parameter name="sku"
value="${container.item.sku}"/>
+ </netui-data:imageAnchorCell>
+ <netui-data:spanCell value="${container.item.make}"/>
+ <netui-data:spanCell value="${container.item.model}"
filterExpression="model" />
+ <netui-data:spanCell
value="${container.item.description}"/>
+ <netui-data:spanCell value="${container.item.sku}"/>
+ <netui-data:spanCell value="${container.item.price}">
+ <netui:formatNumber pattern="$#,###"/>
+ </netui-data:spanCell>
+ <netui-data:spanCell
value="${container.item.status}" styleClass="${container.item.status ==
'Available' ? 'status-available' : 'status-sold'}"/>
+ </netui-data:rows>
+ <netui-data:footer>
+ <td colspan="7" style="height: 50px;">
+ <netui-data:renderPager/>
+ </td>
+ </netui-data:footer>
+ </netui-data:dataGrid>
+ </blockquote>
+ </netui-template:section>
+</netui-template:template></source>
+ </section>
+</body>
+</document>
\ No newline at end of file
Propchange:
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_datagrid.xml
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_overview.xml
URL:
http://svn.apache.org/viewcvs/incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_overview.xml?view=diff&r1=158118&r2=158119
==============================================================================
---
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_overview.xml
(original)
+++
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_overview.xml
Fri Mar 18 10:31:07 2005
@@ -29,7 +29,7 @@
<p><strong>Declarative Programming</strong></p>
<p>Many common web app programming tasks are accomplished through a
declarative programming model using
JSR 175 metadata annotations, a new feature in JKD5. JSR 175
metadata annotations, "annotations"
- for short, are property setters for Java classes and methods,
aliviating the need for independent
+ for short, are property setters for Java classes and methods,
alleviating the need for independent
configuration files. Navigation, exception handling,
validation, and other tasks become configurable
properties of a single Java class, the "controller" class that
drives the web application.</p>
<p><strong>Page Flows are Stateful</strong></p>
@@ -220,7 +220,7 @@
<p>Actions may perform any required
complex logic. For example, if a user clicks on the "My Page" link, the
action may check if
the user is logged in, and if so, navigate the user to the
<code>mypage.jsp</code>
- page, otherwise it will navigate the user to the
+ page; otherwise it will navigate the user to the
<code>login.jsp</code> page.
</p>
@@ -233,7 +233,7 @@
</ul>
<p>
- When using JPFs, pages and actions are interweaved, transparently.
+ When using JPFs, pages and actions are interwoven, transparently.
</p>
<ul>