17

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

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

一个很好的答案:

  • 提到了一种与框架集成的解决方案,
  • 包括指向有用和适用 的内容的链接,例如:
    • 一个教程
    • 文件
    • 或对源代码的引用:
      • 免费
      • 开源公共领域

读者/选民,如果您知道它是真实且伟大的,请为解决方案投票。

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

4

5 回答 5

11

我已经让 StringTemplate 与 Spring 一起工作。基本上,只需要一个自定义视图。

但首先,免责声明:这是一个实验性的黑客攻击。我从未在生产代码中使用过它,在此之前它可以使用一些改进。不过,我认为回答您关于 StringTemplate 与 Web MVC 框架集成的难易程度的问题就足够了。

参考:Spring Web MVC 文档

字符串模板视图.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>
于 2009-01-28T21:54:09.953 回答
2

快速搜索后,我看到了使用 StringTemplate 作为 Spring 视图的演示

于 2009-01-28T21:34:28.120 回答
1

有一个不错的 StringTemplate 实现作为 Spring MVC 的视图,它也支持 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 用户,该项目可在 central

<dependency>
  <groupId>com.watchitlater</groupId>
  <artifactId>spring-stringtemplate</artifactId>
  <version>1.5.1</version>
</dependency>
于 2011-09-29T03:44:14.413 回答
1

开源的 Java WEB 框架JPublish,与 ST 配合得非常好。按照上面的链接,您将在那里找到以下内容:

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

玩得开心,

于 2009-10-21T12:09:02.267 回答
0

某位 Harry Karamidas于 2008 年 12 月在 ST 的官方网站上分享了一个Struts适配器。直接链接到 zip 文件。

于 2009-04-21T15:51:57.223 回答