使用Spring MVC时如何在Freemarker视图中设置内容类型?

我正在使用Sping MVC和freemarker视图.我设置了一个FreeMarkerViewResolver来解析视图,它到目前为止工作但现在我有编码问题.我的所有观点都是UTF-8编码的HTML 5页面,我还添加了一个< meta charset =“UTF-8”/>到HTML页面但字符仍然以错误的编码打印.我用curl检查了HTTP标头,发现了这个:

k@jules:~$curl -I http://localhost:8080/testweb/test.view
HTTP/1.1 200 OK
Content-Type: */*;charset=ISO-8859-1

但是,当我请求一些不存在的资源(生成Tomcat错误)时,我得到了这个:

k@jules:~$curl -I http://localhost:8080/testweb/nothere.html
HTTP/1.1 200 OK
Content-Type: text/html;charset=utf-8

因此Tomcat本身返回正确的内容类型,但Spring MVC Freemarker视图不会.

对于JSP,我可以在JSP标头中设置Content-Type,但是在哪里可以为freemarker模板设置它?我想我必须在Spring bean配置中的某个地方做这个,但我找不到合适的地方.

解决方法:

视图解析器(应该在您的dispatcher-servlet.xml中)具有以下内容的contentType属性:

<bean id="viewResolver"
   class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
    <property name="prefix" value=""/>
    <property name="suffix" value=".ftl"/>
    <property name="contentType" value="text/html;charset=UTF-8"/>
</bean>
上一篇:SpringBoot系列:Spring Boot使用模板引擎FreeMarker


下一篇:阶段5 3.微服务项目【学成在线】_day04 页面静态化_11-freemarker静态化测试-基于模板字符串静态化