简体   繁体   English

Spring @RequestBody 中的枚举列表为空

[英]Spring Enum list empty in @RequestBody

I have the below enum with two values, and i have a search api with many fields, One of these fields is a list of StatusEnum .我有以下带有两个值的枚举,并且我有一个搜索 api 有许多字段,其中一个字段是StatusEnum的列表。 So i created a dto that contains this field.所以我创建了一个包含这个字段的 dto。

The problem when i send the data the list status is always empty我发送数据时的问题列表状态始终为空

json exp: {"status":["En activité"],"startDate":null,"endDate":null} json exp: {"status":["En activité"],"startDate":null,"endDate":null}

public enum StatusEnum {

    INACTIVITY, ENDACTIVITY;

    private static Map<String, StatusEnum > namesMap = new HashMap<>(2);

    static {
        namesMap.put("En activité", INACTIVITY);
        namesMap.put("En fin d'activité", ENDACTIVITY);
    }

    @JsonCreator
    public static StatusEnum forValue(String value) {
        return namesMap.get(StringUtils.lowerCase(value));
    }

    @JsonValue
    public String toValue() {
        for (Entry<String, StatusEnum > entry : namesMap.entrySet()) {
            if (entry.getValue() == this)
                return entry.getKey();
        }
        return null;
    }

}


@PostMapping
public ResponseEntity<List<Object>> search(@RequestBody SearchDTO search) { }

public class SearchDTO {
 
   private Date startDate;
   private Date endDate
   private List<StatusEnum> status;
   //getter and setter
 
}
@JsonCreator
public static StatusEnum forValue(String value) {
    return namesMap.get(StringUtils.lowerCase(value));
}

Problem is the usage of #lowerCase in forValue .问题是 forValue 中forValue的使用。 Your keys in your map aren't lower-cased. map 中的密钥不是小写的。 That's why namesMap.get can't find anything.这就是namesMap.get找不到任何东西的原因。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM