当前位置: 首页 > 知识库问答 >
问题:

Java根据REST调用显示/隐藏对象字段

漆雕欣德
2023-03-14

是否可以根据REST调用配置Item类来显示和隐藏特定字段?例如,当调用XMLController时,我希望从User类中隐藏colorid(并显示categoryid),而当调用JSONController时,我希望从User类中隐藏colorid

@Getter
@Setter
@NoArgsConstructor
public class Item
{
   private Long id;
   private Long categoryId;    // <-- Show field in XML REST call and hide in JSON REST call
   private Long colorId;       // <-- Show field in JSON REST call and hide in XML REST call
   private Long groupId;
   @JacksonXmlProperty(localName = "item")
   @JacksonXmlElementWrapper(localName = "groupItems")
   private List<GroupedItem> item;
}
@RestController
@RequestMapping(
    path = "/json/",
    produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public class JsonController
{
    @Autowired
    private Service service;

    @RequestMapping(path = "{colorId}")
    public Item getArticles(@PathVariable("colorId") Long colorId)
    {
        return service.getByColor(colorId); // returns JSON without "categoryId"
    }
}
@RestController
@RequestMapping(
    path = "/xml/",
    produces = MediaType.APPLICATION_XML_VALUE)
public class XmlController
{
    @Autowired
    private Service service;

    @RequestMapping(path = "{categoryId}")
    public Item getArticles(@PathVariable("categoryId") Long categoryId)
    {
        return service.getByCategory(categoryId); // returns XML without "colorId"
    }
}

共有1个答案

曾沛
2023-03-14

是的,使用jackson JSON视图和objectmapper#writerwithview方法可以实现这一点。

您只需要为两个控制器不同地配置objectmapper,就可以进行了

下面是jackson JSON视图的一个示例,我们注意到ownername只能在内部访问,而不能公开访问

public class Item {
 
    @JsonView(Views.Public.class)
    public int id;

    @JsonView(Views.Public.class)
    public String itemName;

    @JsonView(Views.Internal.class)
    public String ownerName;
}
 类似资料:
  • 排除不显示字段 Model.findAll({ attributes: { exclude: ['baz'] } });

  • 问题内容: 我一段时间以来一直在寻找解决方案…我试图根据添加到Woocommerce结帐页面上的单选按钮选项来显示或隐藏特定的运费。但是我对Ajax&JQuery并不需要任何了解。 基本上,如果用户选择单选 选项_1 ,它将仅显示“ flat_rate:1 ”和“ flat_rate:2 ”。如果用户选择单选 选项_2 ,它将仅显示“ flat_rate:3 ”和“ flat_rate:4 ” 这

  • 主要内容:实例,jQuery hide() 和 show(),实例,实例,实例,jQuery toggle(),实例隐藏、显示、切换,滑动,淡入淡出,以及动画,哇哦! 因为时间是宝贵的,我们提供快捷方便的学习方法。 在小牛知识库,你可以学习需要的知识。 实例 jQuery hide() 简单的jQuery hide()方法演示。 jQuery hide() 另一个hide()实例。演示如何隐藏文本。 jQuery hide() 和 show() 通过 jQuery,您可以使用 hide() 和

  • 提供显示/隐藏元素的功能。 标题 内容 类型 通用 支持布局 responsive,fixed-height,fill,container,fixed 所需脚本 https://c.mipcdn.com/static/v2/mip-toggle/mip-toggle.js 示例 基本使用 你可以使用事件 toggle, show 或 hide 以控制 mip-toggle 组件的显示与隐藏。 <b

  • 我是一个使用Java开发GUI的新手,我正在使用netbeans来帮助我设计各种JPanel。现在我有一个包含jFrame的类,我将在左边放一个菜单,右边放一个jPanel。当有人在左边做了一个选择时,我想调用jPanel类并将它放在右边的面板中。我见过各种不同的例子,但我不能让它工作。下面是我的文件结构的工作原理 connector.java(创建到db的连接并调用jframe类) jframe

  • 问题内容: 对于我正在做的网站,我想加载一个div,然后隐藏另一个,然后有两个按钮可以使用JavaScript在div之间切换视图。 这是我当前的代码 替换div2的第二个功能不起作用,但第一个功能起作用。 问题答案: 如何显示或隐藏元素: 为了显示或隐藏元素,请操纵元素的style属性。在大多数情况下,您可能只想更改元素的属性: 或者,如果您仍然希望元素占用空间(例如,如果您要隐藏表格单元格),