哪些Java MVC框架可以与StringTemplate轻松集成?

时间:2009-01-28 19:11:32

标签: java frameworks integration template-engine stringtemplate

很难看出 StringTemplate 如何与流行的 Java Web MVC框架轻松集成(或不集成)。

哪些Java MVC框架可以轻松地与StringTemplate集成?

一个好的答案:

  • 提到一个解决方案与框架集成,
  • 包含一个有用且适用的链接,例如:
    • 教程
    • 文档
    • 或对源代码的引用:
      • 自由
      • 开源公共域

读者/选民,如果您知道这是真的那么好,请投票选出解决方案。

在这个问题的范围内,我对除StringTemplate 之外的任何其他模板引擎不感兴趣。

5 个答案:

答案 0 :(得分:11)

我已经使用StringTemplate来使用Spring。基本上,它只需要一个自定义视图。

但首先,免责声明:这是一个实验性黑客。我从来没有在生产代码中使用它,它可以在发生之前使用一些改进。我认为回答关于StringTemplate如何轻松地与Web MVC框架集成的问题就足够了。

参考: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();
    }
}

示例视图解析器定义:

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

答案 1 :(得分:2)

答案 2 :(得分:1)

开源Java WEB框架JPublish与ST一起运作良好。按照上面的链接,你会发现以下内容:

  • JPublish框架用户指南
  • 一个实用的演示(可从Google代码下载~5.7MB),向您展示如何使用JPublish中的ST。你会发现它是多么容易。

玩得开心,

答案 3 :(得分:1)

作为Spring MVC的一个视图,StringTemplate也有一个非常糟糕的实现,它也支持SiteMesh集成。

https://github.com/tomcz/spring-stringtemplate/

有一个使用ST作为该项目中的视图技术的webapp的示例实现(包括sitemesh集成)。这里不值得重复,所以指向它的指针是:

https://github.com/tomcz/spring-stringtemplate/tree/master/src/test/webapp/WEB-INF

作者还为XSS预防的编码/转义输出提供了支持。这种支持适用于HTML,CSS,XML,JS和URL。

如果您是Maven用户,则该项目可在中央

上找到
<dependency>
  <groupId>com.watchitlater</groupId>
  <artifactId>spring-stringtemplate</artifactId>
  <version>1.5.1</version>
</dependency>

答案 4 :(得分:0)

某个Harry Karamidas shared,2008年12月,ST的官方网站上有一个 Struts 适配器。 Direct link到zip文件。