views:

2439

answers:

5

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.

+2  A: 

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

yawmark
+4  A: 

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>
Jeff
A: 

A certain Harry Karamidas shared, in December 2008, a Struts adapter on ST's official site. Direct link to the zip file.

Daniel Jomphe
+1  A: 

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,

Florin
A: 

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??

jolsys