Dan*_*phe 17 java integration frameworks template-engine stringtemplate
很难看出StringTemplate如何轻松(或不)与流行的 Java Web MVC框架集成.
哪些Java MVC框架可以与StringTemplate轻松集成?
一个很好的答案:
读者/选民,如果你知道这是真的和伟大的,请投票寻找解决方案.
在这个问题的范围内,我对除StringTemplate之外的任何其他模板引擎都不感兴趣.
Jef*_*eff 11
我已经使用StringTemplate与Spring一起工作了.基本上,它只需要一个自定义视图.
但首先,免责声明:这是一个实验性黑客.我从来没有在生产代码中使用它,它可以在发生之前使用一些改进.我认为回答关于StringTemplate与Web MVC框架的集成方式的问题已经足够了.
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();
}
}
Run Code Online (Sandbox Code Playgroud)
以及一个示例视图解析器定义:
<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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4069 次 |
| 最近记录: |