Base class for controller logic, exception handlers, and state associated with a particular web directory path. The class is configured through the {@link org.apache.beehive.netui.pageflow.annotations.Jpf.Controller @Jpf.Controller} annotation.
When a page flow request (the page flow URI itself, or any ".do" or page URI in the directory path), arrives, an instance of the associated PageFlowController class is set as the current page flow, and remains stored in the session until a different one becomes active ("long lived" page flows stay in the session indefinitely; see {@link org.apache.beehive.netui.pageflow.annotations.Jpf.Controller#longLived longLived}on {@link org.apache.beehive.netui.pageflow.annotations.Jpf.Controller @Jpf.Controller}).
The page flow class handles actions that are most commonly raised by user interaction with pages. The actions are handled by action methods or action annotations that determine the next URI to be displayed, after optionally performing arbitrary logic.
If the PageFlowController is a "nested page flow" ( {@link org.apache.beehive.netui.pageflow.annotations.Jpf.Controller#nested nested} is set to true
on {@link org.apache.beehive.netui.pageflow.annotations.Jpf.Controller @Jpf.Controller}), then this is a reusable, modular flow that can be "nested" during other flows. It has entry points (actions with optional form bean arguments), and exit points ( {@link org.apache.beehive.netui.pageflow.annotations.Jpf.Forward @Jpf.Forward}, {@link org.apache.beehive.netui.pageflow.annotations.Jpf.SimpleAction @Jpf.SimpleAction}, or {@link org.apache.beehive.netui.pageflow.annotations.Jpf.ConditionalForward @Jpf.ConditionalForward} annotationsthat have returnAction
attributes).
The page flow class also handles exceptions thrown by actions or during page execution (see {@link org.apache.beehive.netui.pageflow.annotations.Jpf.Controller#catches catches} on{@link org.apache.beehive.netui.pageflow.annotations.Jpf.Controller @Jpf.Controller}). Unhandled exceptions are handled in order by declared {@link SharedFlowController}s (see {@link org.apache.beehive.netui.pageflow.annotations.Jpf.Controller#sharedFlowRefs sharedFlowRefs} on{@link org.apache.beehive.netui.pageflow.annotations.Jpf.Controller @Jpf.Controller}).
Properties in the current page flow instance can be accessed from JSP 2.0-style expressions like this one: ${pageFlow.someProperty}
.
There may only be one page flow in any package.
@see SharedFlowController