问题描述
很难看出 StringTemplate 如何与流行的 Java Web MVC框架轻松集成(或不集成)。
It's hard to see how StringTemplate integrates easily (or not) with popular Java web MVC frameworks.
哪些Java MVC框架可以轻松地与StringTemplate集成?
一个很好的答案:
- 提及一个解决方案与框架集成,
- 包含一个有用且适用的链接 ,例如:
- 教程,
- 或文档,
- 或对源代码的引用:
- 免费,
- 和开源或公共领域。
- 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.
在这个问题的范围内,我对任何其他模板引擎不感兴趣比StringTemplate 。
In the scope of this question, I am not interested in any other templating engine than StringTemplate.
推荐答案
我已经使用StringTemplate来使用Spring。基本上,它只需要一个自定义视图。
I've gotten StringTemplate to work with Spring. Basically, all it took was a custom view.
但首先,免责声明:这是一个实验性的黑客攻击。我从来没有在生产代码中使用它,它可以在发生之前使用一些改进。我认为回答你关于StringTemplate如何轻松地与Web MVC框架集成的问题就足够了。
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.
参考:
StringTemplateView.java :
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>
这篇关于哪些Java MVC框架可以轻松地与StringTemplate集成?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!