Java Spring web - преобразовать под-свойство в объект с помощью валидатора - PullRequest
1 голос
/ 11 марта 2020

Я использую Spring Web с моделями и контроллерами сервисов контроллеров. У меня есть объект Color и служба Color.

@Data
public class Color {
    private String name;
    private long value;
    private int rating;
}

В одном из моих контроллеров я принимаю объект:

public class NewEventRequest {
  @NotNull
  @Size(min = 5, max = 30)
  private String eventName;

  /* @ValidColor */
  private Color eventColor;
  // private String eventColor;
}

Как видите, eventColor подсвойство имеет тип Color. Однако я хочу, чтобы отправитель мог отправлять только имя цвета (цветов не так много, и они все равно кэшируются в памяти).

Я знаю, что могу использовать цвет строки типа и валидаторов чтобы убедиться, что цвет существует, но есть ли способ также затем привести его к цвету?

Ответы [ 2 ]

0 голосов
/ 14 марта 2020

Если JSON полезная нагрузка не подходит для модели Java, вам необходимо реализовать пользовательский десериализатор или интерфейс Converter . Взгляните на этот пример:

0 голосов
/ 11 марта 2020

Почему вы не используете типы Enum вместо string? например, как:

public enum ColorName {
    Red, Yellow, Blue, ...
}

@Data
public class Color {
    private ColorName name;
    private long value;
    private int rating;
}

Я не знаю, правильно ли я понимаю, что вы имеете в виду, но оно может содержать значения, которые вы определили. Так что вам даже не нужно проверять значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...