![]() |
This class is deprecated.
as of Spring 3.0, in favor of annotated controllers
Concrete FormController implementation that provides configurable form and success views, and an onSubmit chain for convenient overriding. Automatically resubmits to the form view in case of validation errors, and renders the success view in case of a valid submission.
The workflow of this Controller does not differ much from the one described
in the AbstractFormController
. The difference
is that you do not need to implement showForm
and
processFormSubmission
: A form view and a
success view can be configured declaratively.
Workflow
(in addition to the superclass):
processFormSubmission
which inspects
the Errors
object to see if
any errors have occurred during binding and validation.isFormChangeRequest
is overridden and returns
true for the given request, the controller will return the formView too.
In that case, the controller will also suppress validation. Before returning the formView,
the controller will invoke onFormChange(HttpServletRequest, HttpServletResponse, Object)
, giving sub-classes a chance
to make modification to the command object.
This is intended for requests that change the structure of the form,
which should not cause validation and show the form in any case.onSubmit
using all parameters, which in case of the default implementation delegates to
onSubmit
with just the command object.
The default implementation of the latter method will return the configured
successView
. Consider implementing doSubmitAction(Object)
doSubmitAction
for simply performing a submit action and rendering the success view.The submit behavior can be customized by overriding one of the
onSubmit
methods. Submit actions can also perform
custom validation if necessary (typically database-driven checks), calling
showForm
in case of validation errors to show the form view again.
Exposed configuration properties
(and those defined by superclass):
name | default | description |
formView | null | Indicates what view to use when the user asks for a new form or when validation errors have occurred on form submission. |
successView | null | Indicates what view to use when successful form submissions have
occurred. Such a success view could e.g. display a submission summary.
More sophisticated actions can be implemented by overriding one of
the onSubmit() methods. |
[Expand]
Inherited Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
![]() | |||||||||||
![]() |
[Expand]
Inherited Fields | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
![]() |
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Create a new SimpleFormController.
|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Return the name of the view that should be used for form display.
| |||||||||||
Return the name of the view that should be shown on successful submit.
| |||||||||||
Set the name of the view that should be used for form display.
| |||||||||||
Set the name of the view that should be shown on successful submit.
|
Protected Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Template method for submit actions.
| |||||||||||
Simpler
isFormChangeRequest variant, called by the full
variant isFormChangeRequest(HttpServletRequest, Object) . | |||||||||||
Determine whether the given request is a form change request.
| |||||||||||
Called during form submission if
isFormChangeRequest(javax.servlet.http.HttpServletRequest)
returns true . | |||||||||||
Simpler
onFormChange variant, called by the full variant
onFormChange(HttpServletRequest, HttpServletResponse, Object, BindException) . | |||||||||||
Simpler
onSubmit variant. | |||||||||||
Simplest
onSubmit variant. | |||||||||||
Submit callback with all parameters.
| |||||||||||
This implementation calls
showForm(HttpServletRequest, HttpServletResponse, BindException)
in case of errors, and delegates to the full
onSubmit(HttpServletRequest, HttpServletResponse, Object, BindException) 's
variant else. | |||||||||||
Create a reference data map for the given request and command,
consisting of bean name/bean instance pairs as expected by ModelAndView.
| |||||||||||
Create a reference data map for the given request.
| |||||||||||
This implementation shows the configured form view, delegating to the analogous
showForm(HttpServletRequest, HttpServletResponse, BindException, Map)
variant with a "controlModel" argument. | |||||||||||
This implementation shows the configured form view.
| |||||||||||
This implementation delegates to
isFormChangeRequest(HttpServletRequest, Object) :
A form change request changes the appearance of the form and should not get
validated but just show the new form. |
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
![]() | |||||||||||
![]() | |||||||||||
![]() | |||||||||||
![]() | |||||||||||
![]() | |||||||||||
![]() | |||||||||||
![]() | |||||||||||
![]() | |||||||||||
![]() | |||||||||||
![]() |
Create a new SimpleFormController.
Subclasses should set the following properties, either in the constructor
or via a BeanFactory: commandName, commandClass, sessionForm, formView,
successView. Note that commandClass doesn't need to be set when overriding
formBackingObject
, as this determines the class anyway.
Return the name of the view that should be used for form display.
Return the name of the view that should be shown on successful submit.
Set the name of the view that should be used for form display.
Set the name of the view that should be shown on successful submit.
Template method for submit actions. Called by the default implementation
of the simplest onSubmit(Object)
variant.
This is the preferred submit callback to implement if you want to perform an action (like storing changes to the database) and then render the success view with the command and Errors instance as model. You don't need to care about the success ModelAndView here.
command | form object with request parameters bound onto it |
---|
Exception | in case of errors |
---|
Simpler isFormChangeRequest
variant, called by the full
variant isFormChangeRequest(HttpServletRequest, Object)
.
The default implementation returns false
Parameters
request
current HTTP request
Returns
- whether the given request is a form change request
protected
boolean
isFormChangeRequest
(HttpServletRequest request, Object command)
Determine whether the given request is a form change request.
A form change request changes the appearance of the form
and should always show the new form, without validation.
Gets called by suppressValidation(HttpServletRequest)
and processFormSubmission(HttpServletRequest, HttpServletResponse, Object, BindException)
.
Consequently, this single method determines to suppress validation
and to show the form view in any case.
The default implementation delegates to
isFormChangeRequest(javax.servlet.http.HttpServletRequest)
.
Parameters
request
current HTTP request
command
form object with request parameters bound onto it
Returns
- whether the given request is a form change request
protected
void
onFormChange
(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors)
Called during form submission if
isFormChangeRequest(javax.servlet.http.HttpServletRequest)
returns true
. Allows subclasses to implement custom logic
to modify the command object to directly modify data in the form.
The default implementation delegates to
onFormChange(HttpServletRequest, HttpServletResponse, Object, BindException)
.
Parameters
request
current servlet request
response
current servlet response
command
form object with request parameters bound onto it
errors
validation errors holder, allowing for additional
custom validation
Throws
Exception
in case of errors
protected
void
onFormChange
(HttpServletRequest request, HttpServletResponse response, Object command)
Simpler onFormChange
variant, called by the full variant
onFormChange(HttpServletRequest, HttpServletResponse, Object, BindException)
.
The default implementation is empty.
Parameters
request
current servlet request
response
current servlet response
command
form object with request parameters bound onto it
Throws
Exception
in case of errors
protected
ModelAndView
onSubmit
(Object command, BindException errors)
Simpler onSubmit
variant.
Called by the default implementation of the
onSubmit(HttpServletRequest, HttpServletResponse, Object, BindException)
variant with all parameters.
The default implementation calls onSubmit(Object)
, using the
returned ModelAndView if actually implemented in a subclass. Else, the
default behavior will apply: rendering the success view with the command
and Errors instance as model.
Subclasses can override this to provide custom submission handling that
does not need request and response.
Call errors.getModel()
to populate the ModelAndView model
with the command and the Errors instance, under the specified command name,
as expected by the "spring:bind" tag.
Parameters
command
form object with request parameters bound onto it
errors
Errors instance without errors
Returns
- the prepared model and view
Throws
Exception
in case of errors
protected
ModelAndView
onSubmit
(Object command)
Simplest onSubmit
variant. Called by the default implementation
of the onSubmit(Object, BindException)
variant.
This implementation calls doSubmitAction(Object)
and returns
null
as ModelAndView, making the calling onSubmit
method perform its default rendering of the success view.
Subclasses can override this to provide custom submission handling
that just depends on the command object. It's preferable to use either
onSubmit(Object, BindException)
or doSubmitAction(Object)
,
though: Use the former when you want to build your own ModelAndView; use the
latter when you want to perform an action and forward to the successView.
Parameters
command
form object with request parameters bound onto it
Returns
- the prepared model and view, or
null
for default
(that is, rendering the configured "successView")
Throws
Exception
in case of errors
protected
ModelAndView
onSubmit
(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors)
Submit callback with all parameters. Called in case of submit without errors
reported by the registered validator, or on every submit if no validator.
The default implementation delegates to onSubmit(Object, BindException)
.
For simply performing a submit action and rendering the specified success
view, consider implementing doSubmitAction(Object)
rather than an
onSubmit
variant.
Subclasses can override this to provide custom submission handling like storing
the object to the database. Implementations can also perform custom validation and
call showForm to return to the form. Do not implement multiple onSubmit
methods: In that case, just this method will be called by the controller.
Call errors.getModel()
to populate the ModelAndView model
with the command and the Errors instance, under the specified command name,
as expected by the "spring:bind" tag.
Parameters
request
current servlet request
response
current servlet response
command
form object with request parameters bound onto it
errors
Errors instance without errors (subclass can add errors if it wants to)
Returns
- the prepared model and view, or
null
Throws
Exception
in case of errors
protected
ModelAndView
processFormSubmission
(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors)
This implementation calls
showForm(HttpServletRequest, HttpServletResponse, BindException)
in case of errors, and delegates to the full
onSubmit(HttpServletRequest, HttpServletResponse, Object, BindException)
's
variant else.
This can only be overridden to check for an action that should be executed
without respect to binding errors, like a cancel action. To just handle successful
submissions without binding errors, override one of the onSubmit
methods or doSubmitAction(Object)
.
Parameters
request
current servlet request
response
current servlet response
command
form object with request parameters bound onto it
errors
holder without errors (subclass can add errors if it wants to)
Returns
- the prepared model and view, or
null
Throws
Exception
protected
Map
referenceData
(HttpServletRequest request, Object command, Errors errors)
Create a reference data map for the given request and command,
consisting of bean name/bean instance pairs as expected by ModelAndView.
The default implementation delegates to referenceData(HttpServletRequest)
.
Subclasses can override this to set reference data used in the view.
Parameters
request
current HTTP request
command
form object with request parameters bound onto it
errors
validation errors holder
Returns
- a Map with reference data entries, or
null
if none
Throws
Exception
in case of invalid state or arguments
See Also
protected
Map
referenceData
(HttpServletRequest request)
Create a reference data map for the given request.
Called by the referenceData(HttpServletRequest, Object, Errors)
variant with all parameters.
The default implementation returns null
.
Subclasses can override this to set reference data used in the view.
Parameters
request
current HTTP request
Returns
- a Map with reference data entries, or
null
if none
Throws
Exception
in case of invalid state or arguments
protected
ModelAndView
showForm
(HttpServletRequest request, HttpServletResponse response, BindException errors)
This implementation shows the configured form view, delegating to the analogous
showForm(HttpServletRequest, HttpServletResponse, BindException, Map)
variant with a "controlModel" argument.
Can be called within
onSubmit(HttpServletRequest, HttpServletResponse, Object, BindException)
implementations, to redirect back to the form in case of custom validation errors
(errors not determined by the validator).
Can be overridden in subclasses to show a custom view, writing directly
to the response or preparing the response before rendering a view.
If calling showForm with a custom control model in subclasses, it's preferable
to override the analogous showForm version with a controlModel argument
(which will handle both standard form showing and custom form showing then).
Parameters
request
current HTTP request
response
current HTTP response
errors
validation errors holder
Returns
- the prepared form view, or
null
if handled directly
Throws
Exception
protected
ModelAndView
showForm
(HttpServletRequest request, HttpServletResponse response, BindException errors, Map controlModel)
This implementation shows the configured form view.
Can be called within
onSubmit(HttpServletRequest, HttpServletResponse, Object, BindException)
implementations, to redirect back to the form in case of custom validation errors
(errors not determined by the validator).
Can be overridden in subclasses to show a custom view, writing directly
to the response or preparing the response before rendering a view.
Parameters
request
current HTTP request
errors
validation errors holder
controlModel
model map containing controller-specific control data
(e.g. current page in wizard-style controllers or special error message)
Returns
- the prepared form view
Throws
Exception
in case of invalid state or arguments
See Also
protected
boolean
suppressValidation
(HttpServletRequest request, Object command)
This implementation delegates to isFormChangeRequest(HttpServletRequest, Object)
:
A form change request changes the appearance of the form and should not get
validated but just show the new form.
Parameters
request
current HTTP request
command
the command object to validate
Returns
- whether to suppress validation for the given request