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

标签 java frameworks integration template-engine stringtemplate

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

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

一个好的答案:

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

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

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

最佳答案

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

但首先,免责声明:这是一个实验性黑客攻击。我从未在生产代码中使用过它,在此之前它可以使用一些改进。不过,我认为足以回答您关于 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();
    }
}

还有一个示例 View 解析器定义:

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

关于java - 哪些 Java MVC 框架可以轻松地与 StringTemplate 集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/488930/

相关文章:

ios - 我可以只在 'c' 中编写 ios 框架吗?

Java Python 集成

java - JSR082 - LocalDevice.getLocalDevice() 返回 null

java - 搜索具有多种数据类型的ArrayList

ios - CFSDK支付网关 'Invalid token sent in request'

java - 纯 Java 中的依赖注入(inject)

ruby-on-rails - ActiveResource 错误处理

oauth-2.0 - 带沙盒的 Salesforce 授权

java - 在 AWT 事件模型中冒泡?

java - 为什么java中Object.equals(Object o)需要Object.hashCode()?