【问题标题】:Java Spring creating response from templateJava Spring从模板创建响应
【发布时间】:2016-05-30 13:12:19
【问题描述】:

到目前为止,在发送 ajax 请求时,在我们的控制器中,我们确实返回了 JsonMessage 并在客户端装饰了数据。但是最近我们正在使用第三方 UI 框架,它接受一个准备好使用的 HTML 作为 ajax 回调。

有没有办法在不将所有 html 标记带到控制器的情况下做到这一点?类似于接受 JSON 和模板的后处理器,将其渲染然后发送给客户端?

注意:响应是 JSON 格式,它有一个包含该 HTML 的属性。

我们使用springframework 4.2.6。

【问题讨论】:

标签: java ajax spring spring-mvc


【解决方案1】:

通常你需要在控制器中添加一些方法来返回ModelAndView对象。

还需要配置ViewResolver,并在ModelAndView对象中设置视图名称和对应的模型。 像这样

@Controller
public class DefaultController {
  @RequestMapping(value = "/html", produces = "application/json")
  public ModelAndView getUserHtml(HttpServletResponse response) throws Exception {
    response.setContentType("application/json");
    return new ModelAndView("user", Collections.singletonMap("user", this.user));
  }
}

你会看到这样的回应

{
  "response": "<div><h1>Java Spring creating response from template</h1><h2>User</h2><p>username: superuser</p><p>password: secret</p><p>email: superuser@mail.com</p></div></html>"
}

工作示例项目:https://github.com/sandarkin/so-q37526576

【讨论】:

  • 我试过了,谢谢,但这会返回 html,而不是包含该 html 的 json:\
  • 好的。我已经通过强制设置内容类型来调整示例项目。现在localhost:8080/default/html 将返回具有正确内容类型的 json。
猜你喜欢
  • 1970-01-01
  • 2018-10-21
  • 2011-07-26
  • 2017-09-11
  • 2019-04-08
  • 1970-01-01
  • 1970-01-01
  • 2019-04-07
  • 2012-04-30
相关资源
最近更新 更多