|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.context.support.ApplicationObjectSupport org.springframework.web.context.support.WebApplicationObjectSupport org.springframework.web.servlet.support.WebContentGenerator org.springframework.web.servlet.mvc.AbstractController org.springframework.web.servlet.mvc.BaseCommandController org.springframework.web.servlet.mvc.AbstractFormController org.springframework.web.servlet.mvc.SimpleFormController org.springframework.web.servlet.mvc.CancellableFormController
public class CancellableFormController
Extension of SimpleFormController
that supports "cancellation"
of form processing. By default, this controller looks for a given parameter in the
request, identified by the cancelParamKey
. If this parameter is present,
then the controller will return the configured
cancelView
, otherwise
processing is passed back to the superclass.
Workflow
(in addition to the superclass):
processFormSubmission
which calls
isCancelRequest(javax.servlet.http.HttpServletRequest)
to see if the incoming request is to cancel the
current form entry. By default, isCancelRequest(javax.servlet.http.HttpServletRequest)
returns true
if the configured cancelParamKey
exists in the request.
This behavior can be overridden in subclasses.isCancelRequest(javax.servlet.http.HttpServletRequest)
returns false
, then the controller
will delegate all processing back to SimpleFormController
,
otherwise it will call the onCancel(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object)
version with all parameters.
By default, that method will delegate to the onCancel(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object)
version with just
the command object, which will in turn simply return the configured
cancelView
. This behavior can be overridden in subclasses.Thanks to Erwin Bolwidt for submitting the original prototype of such a cancellable form controller!
setCancelParamKey(java.lang.String)
,
setCancelView(java.lang.String)
,
isCancelRequest(javax.servlet.http.HttpServletRequest)
,
onCancel(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, Object)
Field Summary |
---|
Fields inherited from class org.springframework.web.servlet.mvc.BaseCommandController |
---|
DEFAULT_COMMAND_NAME |
Fields inherited from class org.springframework.web.servlet.support.WebContentGenerator |
---|
METHOD_GET, METHOD_HEAD, METHOD_POST |
Fields inherited from class org.springframework.context.support.ApplicationObjectSupport |
---|
logger |
Constructor Summary | |
---|---|
CancellableFormController()
|
Method Summary | |
---|---|
String |
getCancelParamKey()
Return the key of the request parameter used to identify a cancel request. |
String |
getCancelView()
Gets the name of the cancel view. |
protected boolean |
isCancelRequest(HttpServletRequest request)
Determine whether the incoming request is a request to cancel the processing of the current form. |
protected boolean |
isFormSubmission(HttpServletRequest request)
Consider an explicit cancel request as a form submission too. |
protected ModelAndView |
onCancel(HttpServletRequest request,
HttpServletResponse response,
Object command)
Callback method for handling a cancel request. |
protected ModelAndView |
onCancel(Object command)
Simple onCancel version. |
protected ModelAndView |
processFormSubmission(HttpServletRequest request,
HttpServletResponse response,
Object command,
BindException errors)
This implementation first checks to see if the incoming is a cancel request, through a call to isCancelRequest(javax.servlet.http.HttpServletRequest) . |
void |
setCancelParamKey(String cancelParamKey)
Set the key of the request parameter used to identify a cancel request. |
void |
setCancelView(String cancelView)
Sets the name of the cancel view. |
protected boolean |
suppressValidation(HttpServletRequest request,
Object command)
Suppress validation for an explicit cancel request too. |
Methods inherited from class org.springframework.web.servlet.mvc.SimpleFormController |
---|
doSubmitAction, getFormView, getSuccessView, isFormChangeRequest, isFormChangeRequest, onFormChange, onFormChange, onSubmit, onSubmit, onSubmit, referenceData, referenceData, setFormView, setSuccessView, showForm, showForm |
Methods inherited from class org.springframework.web.servlet.mvc.AbstractFormController |
---|
currentFormObject, formBackingObject, getCommand, getErrorsForNewForm, getFormSessionAttributeName, getFormSessionAttributeName, handleInvalidSubmit, handleRequestInternal, isBindOnNewForm, isSessionForm, onBindOnNewForm, onBindOnNewForm, setBindOnNewForm, setSessionForm, showForm, showForm, showNewForm |
Methods inherited from class org.springframework.web.servlet.mvc.AbstractController |
---|
handleRequest, isSynchronizeOnSession, setSynchronizeOnSession |
Methods inherited from class org.springframework.web.servlet.support.WebContentGenerator |
---|
applyCacheSeconds, applyCacheSeconds, cacheForSeconds, cacheForSeconds, checkAndPrepare, checkAndPrepare, getCacheSeconds, getSupportedMethods, isRequireSession, isUseCacheControlHeader, isUseCacheControlNoStore, isUseExpiresHeader, preventCaching, setCacheSeconds, setRequireSession, setSupportedMethods, setUseCacheControlHeader, setUseCacheControlNoStore, setUseExpiresHeader |
Methods inherited from class org.springframework.web.context.support.WebApplicationObjectSupport |
---|
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext |
Methods inherited from class org.springframework.context.support.ApplicationObjectSupport |
---|
getApplicationContext, getMessageSourceAccessor, requiredContextClass, setApplicationContext |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public CancellableFormController()
Method Detail |
---|
public final void setCancelParamKey(String cancelParamKey)
The parameter is recognized both when sent as a plain parameter ("_cancel") or when triggered by an image button ("_cancel.x").
public final String getCancelParamKey()
public final void setCancelView(String cancelView)
public final String getCancelView()
protected boolean isFormSubmission(HttpServletRequest request)
isFormSubmission
in class AbstractFormController
request
- current HTTP request
isCancelRequest(javax.servlet.http.HttpServletRequest)
protected boolean suppressValidation(HttpServletRequest request, Object command)
suppressValidation
in class SimpleFormController
request
- current HTTP requestcommand
- the command object to validate
isCancelRequest(javax.servlet.http.HttpServletRequest)
protected ModelAndView processFormSubmission(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception
isCancelRequest(javax.servlet.http.HttpServletRequest)
. If so, control is passed to
onCancel(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object)
; otherwise, control is passed up to
SimpleFormController.processFormSubmission(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object, org.springframework.validation.BindException)
.
processFormSubmission
in class SimpleFormController
request
- current servlet requestresponse
- current servlet responsecommand
- form object with request parameters bound onto iterrors
- holder without errors (subclass can add errors if it wants to)
null
Exception
- in case of errorsisCancelRequest(javax.servlet.http.HttpServletRequest)
,
onCancel(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, Object)
,
SimpleFormController.processFormSubmission(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object, org.springframework.validation.BindException)
protected boolean isCancelRequest(HttpServletRequest request)
By default, this method returns true
if a parameter
matching the configured cancelParamKey
is present in
the request, otherwise it returns false
. Subclasses may
override this method to provide custom logic to detect a cancel request.
The parameter is recognized both when sent as a plain parameter ("_cancel") or when triggered by an image button ("_cancel.x").
request
- current HTTP requestsetCancelParamKey(java.lang.String)
,
PARAM_CANCEL
protected ModelAndView onCancel(HttpServletRequest request, HttpServletResponse response, Object command) throws Exception
isCancelRequest(javax.servlet.http.HttpServletRequest)
returns true
.
Default implementation delegates to onCancel(Object)
to return
the configured cancelView
. Subclasses may override either of the two
methods to build a custom ModelAndView
that may contain model
parameters used in the cancel view.
If you simply want to move the user to a new view and you don't want to add
additional model parameters, use setCancelView(String)
rather than
overriding an onCancel
method.
request
- current servlet requestresponse
- current servlet responsecommand
- form object with request parameters bound onto it
null
Exception
- in case of errorsisCancelRequest(javax.servlet.http.HttpServletRequest)
,
onCancel(Object)
,
setCancelView(java.lang.String)
protected ModelAndView onCancel(Object command) throws Exception
onCancel
version. Called by the default implementation
of the onCancel
version with all parameters.
Default implementation returns eturns the configured cancelView
.
Subclasses may override this method to build a custom ModelAndView
that may contain model parameters used in the cancel view.
If you simply want to move the user to a new view and you don't want to add
additional model parameters, use setCancelView(String)
rather than
overriding an onCancel
method.
command
- form object with request parameters bound onto it
null
Exception
- in case of errorsonCancel(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, Object)
,
setCancelView(java.lang.String)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |