java - Spring MVC 和 Rest : different "layout" with same "content"?

标签 java spring rest tiles

我有一个 Spring 3.0 Web 应用程序,只要它是务实的,它就会尝试遵循 REST 原则。

我有一个 Controller 方法来返回一个文件夹(这是我的业务实体)。 (获取 http://.../folders/ {id})。如果用户访问此 URL,他将获得一个完整的 HTML 页面:包含页眉、页脚、菜单和文件夹详细信息。 – 使用 Apache Tiles 完成页眉、页脚和菜单的“增强”。

现在我有了另一个 View ,用户可以在其中看到文件夹树,如果他单击其中一个文件夹,文件夹详细信息将/应该通过 AJAX 加载,并显示在树旁边。在这种情况下,AJAX 响应应该是呈现的 HTML(无 JSON),因为当用户直接访问文件夹页面时,真实内容应该看起来像。

我的问题是,当我请求相同的 URL 时,服务器不仅会返回真实 内容,还会返回页眉、页脚和菜单。

我的问题是如何以一种时尚的方式来处理这个问题:- 当然我可以使用一个额外的参数和两个具有不同图 block 模板的 Controller 方法,但我认为这不太好,因为它使用 html 参数进行“布局”,我必须编写两个 Controller 方法(以及周围的所有东西)才能有两个 tile 模板

  • 那么以休息方式使用另一个 HTML“布局”访问相同“内容”的推荐方法是什么?
  • 是否有任何方法可以根据我的需要切换 tiles 模板定义中的模板(如何指定取决于对其他问题的回答)。

最佳答案

在 ReST 中,您所描述的问题将通过基于 Accept header 的内容协商来解决:请求者将指示预期的类型,例如 test/html、application/json 等。您可以使用通过让您的 Ajax 调用请求不同的类型来实现这一点。由于您使用的是 Spring 3 MVC,因此您应该能够配置 ViewResolvers 以根据请求的类型返回装饰或未装饰的 View 。这看起来像 reasonable example .

关于java - Spring MVC 和 Rest : different "layout" with same "content"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6664857/

相关文章:

java - 无法注册助手 org.reSTLet.ext.ssl.HttpsClientHelper

java - 如何使用@BeforeTest注释获取testng中的方法名称

java - 修改我的 .jar 程序的任务栏图标

java - 存储可修改数组的各种方式的效率

java - 如何使用 spring boot 和 jpa 一起软删除父级和子级(级联)

java - 使用 Spring JPA 处理软删除

wordpress - 如何让 WordPress 的 REST API 包含用户元数据?

java - 为什么会出现 "No suitable method found for anonymous "错误?

java - Play Framework 2.4 - 依赖注入(inject)来替换 GlobalSettings.onStart()

java - Spring Beans 中的 <property> 标签如何为私有(private)成员设置值?