|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
ObjectPageFlowManagedObject
FlowController
PageFlowController
public abstract class PageFlowController
Base class for user-defined state and controller logic associated with a particular web application directory. The source code for this class lives in the directory with a ".jpf" extension, and is automatically recompiled by the server whenever necessary. When a request arrives for any ".jpf", ".jsp", or ".do" in the directory, an instance of the PageFlowController class is set as the current page flow, and remains in the session until a different one becomes active.
The user's PageFlowController class handles actions that are most commonly raised by user interaction with JSP files. The actions are handled by action methods that perform arbitrary logic and determine the next URI to be displayed.
Actions that are not handled by the current PageFlowController "bubble" up to the appropriate
SharedFlowController
instance.
Data in the current PageFlowController instance can be accessed by databinding tags using the
pageFlow
scope.
SharedFlowController
,
Serialized FormField Summary |
---|
Fields inherited from class FlowController |
---|
defaultLocale, servlet |
Constructor Summary | |
---|---|
protected |
PageFlowController()
Default constructor. |
Method Summary | |
---|---|
void |
create(HttpServletRequest request,
HttpServletResponse response,
ServletContext servletContext)
This is a framework method for initializing a newly-created page flow, and should not normally be called directly. |
void |
ensureFailover(HttpServletRequest request)
Ensures that any changes to this FlowController will be replicated in a cluster (for failover), even if the replication scheme uses a change-detection algorithm that relies on HttpSession.setAttribute to be aware of changes. |
ActionForward |
exitNesting(HttpServletRequest request,
HttpServletResponse response,
ActionMapping mapping,
ActionForm form)
|
String |
getCurrentForwardPath()
Get the webapp-relative URI for the most recent page (in this page flow) shown to the user. |
PreviousPageInfo |
getCurrentPageInfo()
Get information about the most recent page (in this page flow) shown to the user. |
String |
getDisplayName()
Get the display name of this page flow. |
String |
getModulePath()
Get the Struts module path for this page flow. |
PreviousActionInfo |
getPreviousActionInfo()
Get information about the most recent action run in this page flow. |
protected String |
getPreviousActionURI()
Get the URI for the most recent action in this PageFlowController. |
protected ActionForm |
getPreviousForm()
Deprecated. This method may return an ActionForm wrapper when the form bean type does not extend
ActionForm . Use getPreviousFormBean() instead. |
protected Object |
getPreviousFormBean()
Get the submitted form bean from the most recent action execution in this PageFlowController. |
protected String |
getPreviousForwardPath()
Get the webapp-relative URI for the previous page (in this page flow) shown to the user. |
PreviousPageInfo |
getPreviousPageInfo()
Get information about the previous page (in this page flow) shown to the user. |
PreviousPageInfo |
getPreviousPageInfoLegacy(PageFlowController curJpf,
HttpServletRequest request)
Deprecated. This method will be removed without replacement in a future release. |
SharedFlowController |
getSharedFlow(String sharedFlowName)
Get a shared flow, based on its name as defined in this page flow's Jpf.Controller#sharedFlowRefs
annotation. |
Map<String,SharedFlowController> |
getSharedFlows()
Get the a map of shared flow name to shared flow instance. |
protected String |
getTaxonomy()
Get the "resource taxonomy": a period-separated list that starts with the current web application name, continues through all of this PageFlowController's parent directories, and ends with this PageFlowController's class name. |
String |
getURI()
Get the URI for addressing this PageFlowController. |
protected ActionForward |
internalExecute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
|
protected boolean |
isLongLived()
Tell whether this is a "long lived" page flow. |
protected boolean |
isNestable()
Tell whether this PageFlowController can be "nested", i.e., if it can be invoked from another page flow with the intention of returning to the original one. |
boolean |
isPageFlow()
Tell whether this is a PageFlowController. |
boolean |
isPreviousActionInfoDisabled()
|
boolean |
isPreviousPageInfoDisabled()
|
protected void |
onExitNesting()
Callback that is invoked when this controller instance is exiting nesting (through a return action). |
void |
persistInSession(HttpServletRequest request,
HttpServletResponse response)
This is a framework-invoked method to save the page flow instance in the session. |
protected void |
removeFromSession(HttpServletRequest request)
Remove this instance from the session. |
void |
removeSharedFlow(String sharedFlowName)
Remove a shared flow from the session, based on its name as defined in this page flow's Jpf.Controller#sharedFlowRefs annotation. |
void |
savePreviousPageInfo(ActionForward forward,
ActionForm form,
ActionMapping mapping,
HttpServletRequest request,
ServletContext servletContext,
boolean isSpecialForward)
Store information about recent pages displayed. |
void |
valueUnbound(HttpSessionBindingEvent event)
Callback when this page flow is removed from the user session. |
Methods inherited from class PageFlowManagedObject |
---|
fieldIsUninitialized, getServletContext, initializeField, valueBound |
Methods inherited from class Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
protected PageFlowController()
Method Detail |
---|
public String getModulePath()
getModulePath
in interface ActionResolver
getModulePath
in class FlowController
public String getURI()
protected boolean isNestable()
@jpf:controller nested="true"
annotation.
true
if this PageFlowController can be nested.protected boolean isLongLived()
FlowController.remove()
is called. Navigating to another page flow hides
the current long lived controller, but does not remove it.
protected void removeFromSession(HttpServletRequest request)
removeFromSession
in class PageFlowManagedObject
public boolean isPageFlow()
isPageFlow
in interface ActionResolver
isPageFlow
in class FlowController
true
.public void persistInSession(HttpServletRequest request, HttpServletResponse response)
persistInSession
in class PageFlowManagedObject
public void ensureFailover(HttpServletRequest request)
ensureFailover
in class PageFlowManagedObject
request
- the current HttpServletRequestprotected ActionForward internalExecute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception
internalExecute
in class FlowController
Exception
public Map<String,SharedFlowController> getSharedFlows()
SharedFlowController
).public SharedFlowController getSharedFlow(String sharedFlowName)
Jpf.Controller#sharedFlowRefs
annotation. To retrieve any shared flow based on its class name, use PageFlowUtils.getSharedFlow(java.lang.String, javax.servlet.http.HttpServletRequest)
.
sharedFlowName
- the name of the shared flow, as in this page flows's Jpf.Controller#sharedFlowRefs()
annotation.
SharedFlowController
with the given name.public void removeSharedFlow(String sharedFlowName)
Jpf.Controller#sharedFlowRefs
annotation. To remove any shared flow based on its class name, use
PageFlowUtils.removeSharedFlow(java.lang.String, javax.servlet.http.HttpServletRequest)
.
sharedFlowName
- the name of the shared flow, as in this page flows's Jpf.Controller#sharedFlowRefs()
annotation.public final void create(HttpServletRequest request, HttpServletResponse response, ServletContext servletContext)
create
in class FlowController
protected String getTaxonomy()
protected ActionForm getPreviousForm()
ActionForm
wrapper when the form bean type does not extend
ActionForm
. Use getPreviousFormBean()
instead.
Note: if the current page flow does not contain a Jpf.Forward
or a
Jpf.SimpleAction
with a navigateTo=
attribute, then this method will always return Jpf.NavigateTo.previousAction
null
by default. To enable it in this
situation, add the following method to the page flow:
protected boolean alwaysTrackPreviousAction()
{
return true;
}
null
if there was no form bean submitted.getPreviousPageInfo()
,
getCurrentPageInfo()
,
getPreviousActionInfo()
,
getPreviousActionURI()
,
getPreviousForwardPath()
,
getCurrentForwardPath()
protected Object getPreviousFormBean()
Note: if the current page flow does not contain a Jpf.Forward
or a
Jpf.SimpleAction
with a navigateTo=
attribute, then this method will always return Jpf.NavigateTo.previousAction
null
by default. To enable it in this
situation, add the following method to the page flow:
protected boolean alwaysTrackPreviousAction()
{
return true;
}
null
if there was no form bean submitted.getPreviousPageInfo()
,
getCurrentPageInfo()
,
getPreviousActionInfo()
,
getPreviousActionURI()
,
getPreviousForwardPath()
,
getCurrentForwardPath()
protected String getPreviousActionURI()
Note: if the current page flow does not use a @jpf:forward
with a
return-to="previousAction"
attribute, then this method will always return
null
by default. To enable it in this situation, add the following method
to the page flow:
protected boolean alwaysTrackPreviousAction()
{
return true;
}
getPreviousPageInfo()
,
getCurrentPageInfo()
,
getPreviousActionInfo()
,
getPreviousFormBean()
,
getPreviousForwardPath()
,
getCurrentForwardPath()
public String getCurrentForwardPath()
Note: if the current page flow does not use a @jpf:forward
with a
return-to="previousPage"
or return-to="currentPage"
attribute, then this method will always return null
by default. To enable
it in this situation, add the following method to the page flow:
protected boolean alwaysTrackPreviousPage()
{
return true;
}
getPreviousPageInfo()
,
getCurrentPageInfo()
,
getPreviousActionInfo()
,
getPreviousActionURI()
,
getPreviousFormBean()
,
getPreviousForwardPath()
protected String getPreviousForwardPath()
Note: if the current page flow does not use a @jpf:forward
with a
return-to="previousPage"
or return-to="currentPage"
attribute, then this method will always return null
by default. To enable
it in this situation, add the following method to the page flow:
protected boolean alwaysTrackPreviousPage()
{
return true;
}
getPreviousPageInfo()
,
getCurrentPageInfo()
,
getPreviousActionInfo()
,
getPreviousActionURI()
,
getPreviousFormBean()
,
getCurrentForwardPath()
public final PreviousPageInfo getPreviousPageInfoLegacy(PageFlowController curJpf, HttpServletRequest request)
getPreviousPageInfoLegacy
in class FlowController
public final PreviousPageInfo getCurrentPageInfo()
Note: if the current page flow does not use a @jpf:forward
with a
return-to="previousPage"
or return-to="currentPage"
attribute, then this method will always return null
by default. To enable
it in this situation, add the following method to the page flow:
protected boolean alwaysTrackPreviousPage()
{
return true;
}
getPreviousPageInfo()
,
getPreviousActionInfo()
,
getPreviousActionURI()
,
getPreviousFormBean()
,
getPreviousForwardPath()
,
getCurrentForwardPath()
public final PreviousPageInfo getPreviousPageInfo()
Note: if the current page flow does not use a @jpf:forward
with a
return-to="previousPage"
or return-to="currentPage"
attribute, then this method will always return null
by default. To enable
it in this situation, add the following method to the page flow:
protected boolean alwaysTrackPreviousPage()
{
return true;
}
getCurrentPageInfo()
,
getPreviousActionInfo()
,
getPreviousActionURI()
,
getPreviousFormBean()
,
getPreviousForwardPath()
,
getCurrentForwardPath()
public final PreviousActionInfo getPreviousActionInfo()
Note: if the current page flow does not use a @jpf:forward
with a
return-to="previousAction"
attribute, then this method will always return
null
by default. To enable it in this situation, add the following method
to the page flow:
protected boolean alwaysTrackPreviousAction()
{
return true;
}
getPreviousPageInfo()
,
getCurrentPageInfo()
,
getPreviousActionURI()
,
getPreviousFormBean()
,
getPreviousForwardPath()
,
getCurrentForwardPath()
public String getDisplayName()
getDisplayName
in class PageFlowManagedObject
public boolean isPreviousActionInfoDisabled()
public boolean isPreviousPageInfoDisabled()
public void savePreviousPageInfo(ActionForward forward, ActionForm form, ActionMapping mapping, HttpServletRequest request, ServletContext servletContext, boolean isSpecialForward)
savePreviousPageInfo
in class FlowController
public void valueUnbound(HttpSessionBindingEvent event)
FlowController.onDestroy()
to be called.
valueUnbound
in interface HttpSessionBindingListener
valueUnbound
in class PageFlowManagedObject
public ActionForward exitNesting(HttpServletRequest request, HttpServletResponse response, ActionMapping mapping, ActionForm form)
protected void onExitNesting() throws Exception
FlowController.getRequest()
, FlowController.getResponse()
, FlowController.getSession()
may all be used during this method.
Exception
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |