Pages
Riot uses the concept of pages to model the topology of a website. Each page can have a parent and a list of child-pages. Additionally every page has a so called path-component, which is used to construct the URL under which the page can be requested. If there was a page with the path-component “foo”, that had a parent with the path-component “bar”, the resulting URL would be “/bar/foo”.
If such an URL is requested, the Spring Web-MVC framework needs to find out which controller should be used to handle the request. To perform this lookup, Spring uses the HandlerMapping interface. Riot provides an implementation of that interface that uses the sitemap stored in the database to return a suitable controller.
Therefore each page has a “type” property. The PageHandlerMapping looks for a controller with a name that matches the type of the resolved page.
The page-type is not only used to select a controller, but also to select the appropriate view (in case the controller didn't provide an explicit view name). Therefore Riot provides an implementation of Spring's RequestToViewNameTranslator interface.
Pages are not only used for mapping purposes, but also serve as container for arbitrary data. (ref)