【发布时间】:2018-11-03 20:16:34
【问题描述】:
我有一个数据类,像这样:
public class Person {
private String name;
private Long code;
// corresponding getters and setters
}
我想编写两个 Web 服务,它们提供两种不同的 JSON 表示的 Person。例如,其中一个提供{"name":"foo"},而另一个提供{"name":"foo", "code":"123"}。
作为一个更复杂的场景,假设 Person 有一个引用属性,例如地址。 Address 也有自己的属性,我希望我的两个 Web 服务都考虑这个属性,但每个服务都以自己的方式这样做。
我的 SpringMVC 视图应该是什么样的?
请注意,我是 SpringMVC 的新手。所以请在你的答案旁边给我一个示例代码。
更新 1: 几天后,所有答案都促使我解决控制器中的问题或通过注释数据类。但我想在视图中做到这一点,没有更多的 java 代码。我可以在 JSP 文件或 thymeleaf 模板甚至 .properties 文件中执行此操作吗?
更新 2: 我找到了json-taglib。但不知何故,它被排除在新的升级之外。有没有类似的解决方案?
【问题讨论】:
-
使用单个业务对象模型和两个数据传输对象模型。
-
我想以软和可配置的方式解决这个问题,比如 JSP 模板或 .properties 文件。另外,假设我想要有很多不同的表示。我真的应该为这个简单的问题写几十个课吗?
-
你能提供用例吗??
-
什么意思?我在问题中给出了例子。还不够吗?
-
我不明白。你说你想写两个控制器,但现在你说你想用jsp写它。您没有提到何时要在相同的提交或不同的提交按钮或不同的 jsp 上提供与视图方式相关的不同输出。任何方式,据我了解,我可以告诉你的是从控制器返回相同的人对象,该对象将由 spring 转换为 json,然后根据需要在前端使用它。编辑您的问题,使其完全清楚。
标签: java json spring-mvc spring-restcontroller