Java @RequestBody中的Spring枚举列表为空

Java @RequestBody中的Spring枚举列表为空,java,spring,spring-boot,Java,Spring,Spring Boot,下面的枚举有两个值,我的搜索api有很多字段,其中一个字段是StatusEnum的列表。因此,我创建了一个包含此字段的dto 问题是,当我发送数据时,列表状态始终为空 json exp:{“status”:[“En activité”],“startDate”:null,“endDate”:null} public enum StatusEnum { INACTIVITY, ENDACTIVITY; private static Map<String, StatusEn

下面的枚举有两个值,我的搜索api有很多字段,其中一个字段是
StatusEnum
的列表。因此,我创建了一个包含此字段的dto

问题是,当我发送数据时,列表状态始终为空

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
 
}
公共枚举状态枚举{
不活动,不活动;
私有静态映射namesMap=newhashmap(2);
静止的{
namesMap.put(“En activité”,不活动);
namesMap.put(“En fin d'activité”,ENDACTIVITY);
}
@JsonCreator
公共静态状态枚举forValue(字符串值){
返回namesMap.get(StringUtils.lowerCase(value));
}
@JsonValue
公共字符串toValue(){
for(条目:namesMap.entrySet()){
if(entry.getValue()=此)
return entry.getKey();
}
返回null;
}
}
@邮戳
公共响应性搜索(@RequestBody SearchDTO search){}
公共类SearchDTO{
私人日期开始日期;
私人日期结束日期
私人名单状态;
//接二连三
}
问题是在
forValue
中使用小写字母!
你地图上的钥匙不是下格的。这就是为什么
namemap.get
找不到任何内容。

在注释之前,尝试返回字符串列表,并在getStatus()返回数组中返回.asList(StatusEnum.values());
@JsonCreator
public static StatusEnum forValue(String value) {
    return namesMap.get(StringUtils.lowerCase(value));
}