Some forms are too complex to fit on one page. If, for example, a form includes a large amount of structured data, such as selecting locations on a map, scheduling events in calendar widgets, or changing certain parts of a form depending on an earlier input, it matters to be able to split a specific form into several pages .
This is easy to do with dynamic web pages and Javascript, since you can simply create a tab widget with different pages, and the actual form submitted will contain the entire tab widget and all its input fields, which will give one POSTrequest for the whole operation.
Sometimes, however, it takes a long time to create certain input fields; they can even be intensively computational, even after the page has been generated, taxing the younger computer user browser. In addition, it becomes difficult or impossible to create forms that adapt based on earlier input.
Therefore, it becomes necessary to divide a specific form into several requests for a full page.
This can be difficult, especially since the first page of the form will be POSTup /location/a, which issues a redirect to /location/band is requested by the client as GET. Transferring stored form data from POST /location/ato GET /location/bis a difficulty.
Erwin Vervaet, the creator of the Spring web stream (a subproject of the Spring structure, mostly known for its dependency injection capabilities), once wrote a blog article demonstrating this functionality in the specified structure, and also comparing it with the Lift Web Framework, which implemented similar functionality . It then presents a problem for other web frameworks, which is further described in a later article .
How would Yesod face this problem, especially given his character without being tied to REST?