soo*_*red 5 html freemarker flush spring-mvc
我有一个Spring MVC Web应用程序,它使用freemarker作为模板语言.我目前正在进行更改以刷新html头部分而不是缓冲整个html并在最后进行刷新.我尝试将auto_flush freemarker设置为false并使用freemarker的内置<#flush>指令,如下所示,但这似乎不起作用.
common-header.ftl
<head>
.......
</head>
<#flush>
page.ftl
<#include "common-header.ftl" />
<body>
.......
</body>
Run Code Online (Sandbox Code Playgroud)
我很感激你的帮助.此外,根据API文档,autoFlush()似乎仅适用于不是由#include语句组成并需要多个Template.process()方法的页面.如果这是正确的,我应该编写一个自定义模板处理器来处理页面中的头部和身体部分吗?任何指针都会有所帮助.
更新:
尝试使用FreeMarkerView.java作为视图类,因为它使用HttpServletResponse的默认编写器(PrinterWriter)来处理编写器.虽然PrinterWriter支持flush()并且我的模板中的<#flush> freemarker指令似乎没有调用它,但这不起作用.
尝试扩展FreeMarkerView类以将PrinterWriter包装在BufferedWriter中,但这也不起作用.
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="suffix"><value>.ftl</value></property>
<property name="contentType"><value>text/html; charset=utf-8</value></property>
<property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/>
<property name="exposeSpringMacroHelpers"><value>true</value></property>
</bean>
Run Code Online (Sandbox Code Playgroud)
我很感激任何帮助.
<#flush>只需调用Writer.flush()已Writer提供给 的Template.process。例如,如果这Writer是 a StringWriter,那么该flush()调用当然不会执行任何操作。传递给 FreeMarker 的东西Writer必须确保在调用Writer其方法时执行正确的操作。flush()
auto_flush与你的问题无关。(但是您误解了 API 文档。auto_flush始终支持。文档描述了您想要将其设置为 时的情况false。)
| 归档时间: |
|
| 查看次数: |
546 次 |
| 最近记录: |