Web framework exposes some extensibility points in form of interfaces and their default implementations, which can be overridden to customize behavior. Some of them
This interface is used to abstract out the persistence and lookup of the form objects. The state descriptor, generated by
persist is sent to the
client and stored on the client side. On every user interaction the state descriptor is posted to the server along with form data. To restore the form object,
is called with the sent state descriptor. After event is processed, the form is persisted again and a new state descriptor is sent back to the client and so on.
Possible implementation for this interface are:
- Form state on the client (default implementation). State descriptor is the serialized form itself.
- Form state in the session. State descriptor could be a unique id to resolve the form in the memory. Form object disposal needs to be implemented
- Form state in the database. State descriptor could be a unique id to read the form from the database. Disposal of the stored form objects needs to be implemented
Additional functionality to be implemented could be:
- Encrypting/decrypting serialized form object for the client side form persister
- Encrypting/decrypting state descriptor for server side store mode (or use UUIDs)
- Implement XSRF (Cross-Site-Request-Forgery) protection by modifying state descriptor (or of the special instance variable in case of client side form persister)
Implement specific processing around event handler invocation. For example:
- Open Hibernate session and expose it e.g. on the current thread. Close session after the call is finished
- Custom exception processing and handling
- Custom population of the method parameters
This interface abstracts out the obtaining of request parameters. The default implementation is normally sufficient.
The implementation is dependent on the underlying view engine in the particular technology (e.g. JSP, GSP, WebForms, Razor etc.)
- implements lookup of the main and partial views for the specified form
- renders resolved views to strings, applying the specified model object