Java @RequestBody中的Spring枚举列表为空
下面的枚举有两个值,我的搜索api有很多字段,其中一个字段是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
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));
}