Sunday, March 27, 2011

Which Java MVC frameworks integrate easily with StringTemplate?

It's hard to see how StringTemplate integrates easily (or not) with popular Java web MVC frameworks.

Which Java MVC frameworks integrate easily with StringTemplate?

A good answer:

  • mentions one solution to integrate with a framework,
  • includes a link to something useful and applicable, like:
    • a tutorial,
    • or documentation,
    • or a reference to source code:
      • free,
      • and open source or public domain.

Readers/Voters, please vote for a solution if you know it's true and great.

In the scope of this question, I am not interested in any other templating engine than StringTemplate.

From stackoverflow
  • A quick search led me to this demonstration of using StringTemplate for a Spring view.

  • I've gotten StringTemplate to work with Spring. Basically, all it took was a custom view.

    But first, a disclaimer: This is an experimental hack. I've never used this in production code, and it could use some improvement before that happens. I think it is adequate to answer your question about how easily StringTemplate integrates with a Web MVC framework, however.

    Reference: Spring Web MVC documentation

    StringTemplateView.java:

    import java.io.PrintWriter;
    import java.util.Map;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.antlr.stringtemplate.StringTemplate;
    import org.antlr.stringtemplate.StringTemplateGroup;
    import org.springframework.core.io.Resource;
    import org.springframework.web.servlet.view.InternalResourceView;
    
    public class StringTemplateView extends InternalResourceView {
    
        @Override
        protected void renderMergedOutputModel(Map model, HttpServletRequest request,
          HttpServletResponse response) throws Exception {
    
         // Provides a Spring resource descriptor referring to the .st file
         Resource templateFile = getApplicationContext().getResource(getUrl());
    
         // Kind of redundant...
         StringTemplateGroup group = new StringTemplateGroup("group", templateFile.getFile().getParent());
         StringTemplate template = group.getInstanceOf(getBeanName());
         template.setAttributes(model);
    
         // Output to client
         PrintWriter writer = response.getWriter();
         writer.print(template);
         writer.flush();
         writer.close();
        }
    }
    

    And an example view resolver definition:

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="myapp.web.view.StringTemplateView"/>
        <property name="prefix" value="/WEB-INF/st-views/"/>
        <property name="suffix" value=".st"/>
    </bean>
    
  • A certain Harry Karamidas shared, in December 2008, a Struts adapter on ST's official site. Direct link to the zip file.

  • The open source Java WEB framework JPublish, works very well with ST. By following the link above, you'll find there the following:

    • a JPublish framework user guide
    • a practical demo (downloadable from Google code ~5.7MB) showing you how to use ST from JPublish. You'll realize how easy it is.

    Have fun,

  • Hey, I have a problem because when i want to use this 4 technologies (SpringFramework, StringTemplate, JSTL, HIBERNATE) my JSTL do not work. But when i do not use ST - JSTL works. So I have a question is it possible integration this four technologies??

0 comments:

Post a Comment