когда я использую общий параметр для выполнения некоторой общей логики с помощью spring. Я обнаружил, что не могу использовать enum для ввода. как почтальон или другой.
То, что вы разместили, выглядит как вопрос-ответ в вопросе. Отредактируйте свой вопрос, чтобы переместить часть ответа в ответ.
спасибо. Я был тронут. @davidxxx
@Лес10. Отлично, это очень хорошо объяснено. У вас есть мой голос.
Значение KeyTypeEnum должно быть PHONE в полезной нагрузке JSON. Невозможно однозначно разрешить значение 1, как вы ожидаете. У вас может быть несколько перечислений с одинаковым значением.
имя параметра было определено, какое перечисление должно быть преобразовано. Я пробовал PHONE, но не удалось. Можете ли вы показать пример кода? Спасибо!
Чтобы решить эту проблему, я пробую много способов. наконец, слава богу. Я добился успеха.
Это только для 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» (этот код является уже определенным значением KeyTypeEnum) может быть успешно преобразован в перечисление.
@JsonValue Единицу можно успешно получить за весну.
Чтобы получить правильный ответ, вам действительно нужно задать вопрос.