Because sometimes helpful, well-written FAQ's that address precisely your problem are no substitute for an example, I present you with:

Using Maps of objects in Freemarker, the missing example for:

Why I can't use non-string key in the myMap[myKey] expression? And what to do now?

Here's our class and its HashMap and regular getter:

public class Application implements Serializable {
private <ProcessType, ProcessValue> process = new HashMap<ProcessType,ProcessValue>();

public Map<ProcessType, ProcessValue> getProcess() {
return process;

We can't use this getter because it's wrapped by the Freemarker BeanModel and only accepts Strings.

Here's the new getter that we'll add:

    public ProcessValue getTheProcess(ProcessType type) {
return getProcess().get(type);

And then in our Freemarker template, we call the new getter method.

<#list application.process?keys as processType>

OMG there's a new Neal Stephenson book.