Java Spring MVC中模板引擎之后的处理输出
我目前正在使用SpringMVC和Freemarker作为一种视图技术(模板引擎)。但是,包含多个模板文件会导致输出格式不再正确。我当前的HTML输出可能如下所示:Java Spring MVC中模板引擎之后的处理输出,java,spring,spring-mvc,servlets,servlet-filters,Java,Spring,Spring Mvc,Servlets,Servlet Filters,我目前正在使用SpringMVC和Freemarker作为一种视图技术(模板引擎)。但是,包含多个模板文件会导致输出格式不再正确。我当前的HTML输出可能如下所示: <!-- Newlines before Start-tag --> <html> <head> <title>Title</title> </head> <body> <!-- Intendation is resetted
<!-- Newlines before Start-tag -->
<html>
<head>
<title>Title</title>
</head>
<body>
<!-- Intendation is resetted -->
<div id="page" class="container">
<div class="row">
<div id="content" class="col-xs-12">
<div class="row">
..</div>
<!-- Muliple close tags on same line -->
</div></div>
</div>
</body>
</html>
@Bean
public FreeMarkerViewResolver freeMarkerViewResolver() {
FreeMarkerViewResolver fvr = new FreeMarkerViewResolver();
fvr.setViewClass(CusotmFreeMarkerView.class);
...
}
标题
..
为了便于可视化调试,我想使用一些HTML/XML格式化程序手动格式化输出。然而,在Spring中,在将模型传递给视图技术(在我的例子中是Freemarker)之后,我无法控制输出。我该怎么办
我的猜测是创建一个servlet过滤器,并将其注册为在模板执行后执行。如何在纯Spring Java配置中实现这一点?您可以创建一个自定义视图类,该类扩展FreeMarkerView,并在视图呈现后应用自定义格式。好处是,它只适用于从freemarker视图创建的响应(我假设这是您想要的) 在
formatTemplate
中应用格式后,可以在视图解析器中连接自定义视图:
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver" autowire="no">
<property name="viewClass" value="com.example.CustomFreeMarkerView" />
...
</bean>
在web应用程序中注册一个
DelegatingFilterProxy
,并将其委托给Filter
bean。如何仅使用Java配置来实现这一点?另一个问题是我看不到Freemarker在哪里注册它的过滤器。如果有帮助,这里有相关的代码:在getSerlvetFilters
方法中注册DelegatingFilterProxy,并在创建自定义过滤器的too上下文中放置一个@Bean
方法。
@Bean
public FreeMarkerViewResolver freeMarkerViewResolver() {
FreeMarkerViewResolver fvr = new FreeMarkerViewResolver();
fvr.setViewClass(CusotmFreeMarkerView.class);
...
}