Good Form is a grails plugin that lets you create easy to use, good looking, easy to maintain, complex web forms.
Sophisticated question flow
By complex we mean forms with sophisticated logical flows based on business logic. For example, if the person filling in the form has just said they own a dog, you could ask about their dog license next.
Tested in the real world
Good Form was developed in conjunction with the Legal Aid Commission ACT , and is behind their grant application form. Their grant application form has around 90 defined questions, many of which contain a number of sub questions. Good Form helps the user navigate a relevant path through the questions, only asking what is relevant and is self expanding using entered information as required.
Usability is the priority
Good Form represents the form in a continuous feed of groups of questions. Answers to previous questions are always visible for the user to refer to, and they can jump back to change an answer at any time. Good Form will re-evaluate from any change of answer and determine if any new questions, or a new route through the form should be taken, and ask the next relevant question. Existing answers will be re-used as appropriate.
The form filling process can be exited after any question set with the data saved. The user can then continue filling out the form from where they left off.
Made to maintain and change
Good Form provides a structure that lets you change forms easily without having to completely re-write your website. Questions are written in a simple, readable, GoodForm DSL (Domain Specific Language). The flow and business validation is performed by the One Ring rules engine, separating the business logic from the display and form mechanics. Form versioning lets you update your online forms even when you have a long running form entry process, where the form may remain incomplete for weeks or months. Finally Good Form provides ample expansion and customisation points so you can provide bespoke operations like referencing other systems and data, complex validation, auto-completion and more.
Then check out:
- the developer documentation.
- the Good Form DSL documentation.
- the Good Form groovy docs.
- the code https://github.com/nerdErg/GoodForm
- the video of the gr8conf presentation http://bit.ly/163CZyG
- Added a SELECT form element type
- Move uploaded attachments to uploaded.file.location/formName/formInstanceID/ uploaded.file.location is a configuration option you set in config.groovy
- Modularise the form elements more.
- Enable the use of layout 'cartridges' to enable different layouts in a simple fashion with community contributed L&F. The idea is to make it both more HTML5 and backwards compatible. You should be able to use bootstrap for example, but it should be more accessible.
- Document how you do i18n by using multiple form definitions.