Question

I am building an application using Play for Model and Controller, but using backbone.js, and client side templating. Now, I want the html templates to be served by Play without any backing controller. I know I could put my templates in the public directory, but I would like to use Play's templating engine for putting in the strings in my template from the message file. I do not need any other data, and hence dont want the pain of creating a dummy controller for each template. Can I do this with Play?

Was it helpful?

Solution

You could create a single controller and pass in the template name as a parameter, but I am not sure if it is a good idea.

public static void controller(String templateName) {
    // add whatever logic is needed here
    renderTemplate("Controller/"+templateName+".html");    
}

Then point all your routes to that controller method. Forget about reverse routing, though.

I think I would still rather have a separate controller method for each template. Remember that you can use the @Before annotation (see Play Framework documentation) to have the message string handling in exactly one place, that is executed before each controller method. By using the @With annotation you can even have this logic in a separate class.

OTHER TIPS

You can use template engine from any place in your code:

String result = TemplateLoader.load("Folder/template.html").render(data); 
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top