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

Swagger springfox POST隐藏模型属性

程飞星
2023-03-14
public class RestModel {
   private int id;
   @JsonProperty
   private String name;

   @JsonProperty
   public int getId() {
       return 0;
   }

   @JsonIgnore
   public void setId(int customerId) {
       this.customerId = customerId;
   }

   public int getName() {
       return "abc";
   }

   public void setName(String name) {
       this.name = name;
   }
}
{
  "id": 0,
  "name" : "abc"
}

而在帖子上,我应该看到的只是:

{
   "name"
}

尝试添加:@apimodelproperty(readonly=true)。但那没用。

共有1个答案

全誉
2023-03-14

我已经解决了这个问题,只是扩展了一个对象,我想在用作请求参数时隐藏它的属性。

示例:

我有对象Person.java:

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonView;

import org.joda.time.DateTime;
import org.joda.time.Years;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

import io.swagger.annotations.ApiModelProperty;

/**
 * Simple Person pojo
 */
@Entity
public class Person {

    @GeneratedValue(strategy = GenerationType.AUTO)
    @Id
    private Long dbId;
    private String name;

    private Long id;

    @JsonFormat(pattern="yyyy-MM-dd")
    private Date birthDate;
    private String gender;

    public Person() {
    }

    public Person(long dbId) {
        this.dbId = dbId;
    }

    public Person(Long id, String name, Date birthDate, String gender) {
        this.id = id;
        this.name = name;
        this.birthDate = birthDate;
        this.gender = gender;
    }

    public Long getDbId() {
        return dbId;
    }

    public String getName() {
        return name;
    }

    public Date getBirthDate() {
        return birthDate;
    }

    public String getGender() {
        return gender;
    }

    public Integer getAge() {
        return Years.yearsBetween(new DateTime(birthDate), new DateTime()).getYears();
    }

    public void setDbId(Long dbId) {
        this.dbId = dbId;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setBirthDate(Date birthDate) {
        this.birthDate = birthDate;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
}
import com.fasterxml.jackson.annotation.JsonIgnore;
public class PersonRequest extends Person {

    @Override
    @JsonIgnore
    public void setDbId(Long dbId) {
        super.setDbId(dbId);
    }
}
@RequestMapping(value = "/KVFirstCare/application", method = RequestMethod.POST)
public ApplicationResult application(@RequestBody List<PersonRequest> persons,
                                     HttpServletResponse response) {
}
 类似资料:
  • 问题内容: 在要显示已注册模型的管理站点的根页面上,我想隐藏已注册到Django admin的多个模型。 如果我直接注销这些记录,由于添加新符号“ +”消失了,因此我无法添加新记录。 如何才能做到这一点 ? 问题答案: 基于x0nix的答案,我做了一些实验。似乎从返回空会将模型从index.html中排除,同时仍然允许你直接编辑实例。

  • 问题内容: 使用Angular Material时,我一直看到aria属性。有人可以向我解释,aria前缀是什么意思?但最重要的是,我想了解的是和属性之间的区别。 问题答案: ARIA(可访问的富Internet应用程序)定义了一种使残障人士更容易访问Web内容和Web应用程序的方法。 该属性是HTML5中的新增属性,它告诉 浏览器 不要显示该元素。该属性告诉 屏幕阅读器 是否应该忽略该元素。请查

  • 问题内容: 我正在定义一个类: 编译器抱怨被隐藏。我猜第二次出现在定义中是第一次隐藏在范围内,好像可以将变量分配给两种不同的类型一样。如何正确做? 编辑: 这是一个内部阶级。完整的代码可以是: 现在的问题是,如果我重新提名内部人,我不确定那是和实际上是相同的类型。 问题答案: 不要将内部类参数化: 作为声明中定义的内部(非静态嵌套)类,仍将具有in的含义,因为每个类都对其外部实例具有隐式引用。

  • 我们想隐藏“有优惠券吗?添加一张…”在WooCommerce结账时,如果已添加优惠券或客户在结账页面上添加优惠券。 目前,我们在下面有此代码,当客户在购物车页面输入优惠券,然后导航到结帐页面时,此代码有效。在这种情况下,“拥有优惠券?添加一张…”消息不可见。如果购物车页面上未添加优惠券,则消息可见。 这很好用!但是,当客户在结账页面上添加优惠券时,它不起作用。 1.)我们收到消息“优惠券已添加”,

  • 在使用Angular材质时,我一直在看aria属性。有人能给我解释一下,aria前缀是什么意思吗?但最重要的是,我试图理解的是和属性之间的区别。

  • 我正在使用DTO对象从spring rest控制器中的@RequestBody中检索信息,并在json响应中使用相同的DTO对象。我想完全隐藏一些字段不让响应。 我尝试了,它为未映射的属性返回null,但我的问题是: null FieldBonlyOrderToOrderToMapper 将返回一个OrderDto对象,该对象没有名为(otherFiledA)的字段