【问题标题】:Spring MVC controller return HTMLSpring MVC 控制器返回 HTML
【发布时间】:2013-07-12 09:38:27
【问题描述】:

我在尝试将 HTML 返回到我的 Spring MVC 控制器时遇到问题。

看起来像这样:

@RequestMapping(value = QUESTION_GROUP_CREATE_URL, method = RequestMethod.POST)
public
@ResponseBody
String createQuestionGroup(@RequestBody JsonQuestionGroup questionGroup, HttpServletResponse response) {

    // questionGroup - this comes OK.

    response.setContentType("text/html");
    response.setCharacterEncoding("UTF-8");
    return "<div></div>";
}

我的 Spring 配置:

<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
    <property name="favorPathExtension" value="false"/>
    <property name="favorParameter" value="true"/>
    <property name="mediaTypes">
        <value>
            json=application/json
            xml=application/xml
            html=application/html
        </value>
    </property>
</bean>

我看到萤火虫响应即将到来:{"String":"&lt;div&gt;&lt;/div&gt;"} 我如何告诉这个方法向我发送纯 HTML 作为响应?

【问题讨论】:

  • 这不是一个特别好的主意。
  • 能否请您更具体地说明为什么不是?
  • 你觉得什么更容易 - 编辑嵌入在 java 中的 html,或者只是编辑一个普通的 html/jsp 文件?
  • 我需要这样做是有原因的。我有一个自定义的 JSP 标签,它已经为我生成了 HTML,我正在重用相同的处理程序在 ajax requet 上生成它。如果我不这样做,我需要返回代表我的对象树的 JSON,我需要从中生成适当的 HTML。所以这对我来说更容易,因为我可以重用现有的 Java 代码来执行此操作,而不是编写 Java 脚本来生成相同的 HTML。
  • 那你有什么建议?

标签: java spring spring-mvc controller


【解决方案1】:

像这样更改您的 Spring 配置:html=text/html 并将 produces = MediaType.TEXT_HTML_VALUE 添加到您的 @RequestMapping 注释中。

【讨论】:

  • 如果你必须使用旧版本的spring你可以这样做response.setContentType("text/html"); response.getWriter().println(...)删除@ResponseBody注解。
  • 将产生 = MediaType.TEXT_HTML_VALUE 添加到 @RequestMapping 注释并且它有效。是否必须在 Spring 配置中提供?如果是,需要在哪里提供?
猜你喜欢
  • 2019-05-07
  • 1970-01-01
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
  • 2015-10-12
  • 2018-04-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多