Search code examples
localizationbackbone.jsplayframeworkclient-side-templating

Render views without any controller in Play


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?


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.