Hi Marc,
I'm a little late to this but thought i'd share my solution in case its of any help.
First, I create a component that extends ModelGlue's event context to provide a renderTemplate method.
component extends="ModelGlue.gesture.eventrequest.EventContext" {
/**
* renders a view template and returns its html,
* template: the view template to render
* values: struct of values passed to the view, in addition to the eventcontext
* name: if provided the output will be added to the viewcollection
*/
function renderTemplate(template, values={}, name="") {
var view = new ModelGlue.gesture.eventhandler.View();
view.template = arguments.template;
for(var key in values) {
var value = new ModelGlue.gesture.eventhandler.Value();
value.value = values[key];
view.addValue(value);
}
var content = variables._viewRenderer.renderView(this, view, variables._helpers);
if(len(name)) {
this.getViewCollection().addRenderedView(name, content);
}
return content;
}
}
Then tell ModelGlue to use your component using a little bit of config in your apps ColdSpring.xml
<bean id="modelglue.eventContextFactory" class="ModelGlue.gesture.eventrequest.EventContextFactory">
<property name="modelGlue"><ref bean="modelglue.ModelGlue"/></property>
<property name="statePersister"><ref bean="modelglue.statePersister"/></property>
<property name="viewRenderer"><ref bean="modelglue.viewRenderer"/></property>
<property name="beanPopulator"><ref bean="modelglue.beanPopulator"/></property>
<property name="logWriter"><ref bean="modelglue.logWriter"/></property>
<property name="objectPath"><value>com.myapp.MyEventContext</value></property>
</bean>
Replacing com.myapp.MyEventContext with the path to your new component.
Then in your controller you can call renderTemplate, heres a contrived example.
function sendSomeEmails(event) {
var users = beans.userservice.getSomeUsersAsArray();
for(var user in users) {
var html = event.renderTemplate("emails/some_notification.cfm", {user=user});
beans.emailservice.send(body=html, to=user.getEMail());
}
}
I've found this to be a useful solution allowing you to reuse views for emails
Cheers, Chris