Чтобы решить эту проблему, я пробую много способов.наконец, слава богу. Успехов.
Это только для RequestMethod.POST. И ваш параметр должен быть объектом (может быть, RequestMethod.GET или один параметр также доступен. Но я не нашел, как это сделать)
пример
@Data
@Builder
@AllArgsConstructor
@RequiredArgsConstructor
public class CommonParam implements Serializable {
/**
*
*/
@Size(min = 1, max = CommonConstants.MAX_PARTITION_SIZE)
private List<String> texts;
/**
*
*/
@NotNull
private KeyTypeEnum keyTypeEnum;
}
@PostMapping("/do")
public RpcResult do(@RequestBody @Valid CommonParam commonParam) {
.....
}
последний, но не менее важный
public enum KeyTypeEnum {
/**
* 手机号
*/
PHONE(1, "phone");
private int value;
private String desc;
KeyTypeEnum(int value, String desc) {
this.value = value;
this.desc = desc;
}
public static KeyTypeEnum getByDesc(String desc) {
for (KeyTypeEnum b : KeyTypeEnum.values()) {
if (b.getDesc()
.equals(desc)) {
return b;
}
}
return null;
}
@JsonCreator
public static KeyTypeEnum getByValue(int value) {
for (KeyTypeEnum b : KeyTypeEnum.values()) {
if (Objects.equals(b.getValue(), value)) {
return b;
}
}
return null;
}
@JsonValue
public int getValue() {
return value;
}
public String getDesc() {
return desc;
}
}
Используя @JsonCreator
, мы можем обеспечить ввод как '1' (этоcode - это уже определенное значение KeyTypeEnum), которое можно успешно преобразовать в enum.@JsonValue
убедитесь, что '1' может быть успешным для весны.