很难看出 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/