Data Models

Simple Models

Simple implemations of hashes, lists, and scalars have been provided as a convenience: SimpleScalar, SimpleList and SimpleHash. Unless you're doing something highly unusual, you'll want to use a SimpleHash for the root node.

In many cases, it will be sufficient to copy your data from its original source into a tree of SimpleScalar, SimpleList and SimpleHash objects. If you want to implement lazy evaluation, or if you want to wrap existing data objects for use with templates, you'll want to make adapter or wrapper classes that implement the TemplateModel interfaces. See the sample code for an example.

SimpleList has a number of convenient features. If a TemplateListModel needs to be cached, a SimpleList can make a copy of it. If you're using a SimpleList as a cache, you can also give it a shelf life; its owner (e.g. a servlet) can then ask it, before each request is processed, whether it's gotten stale, and refresh it if necessary.