1

我正在使用带有控制器服务模型和验证的 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. 但是,我希望发件人能够只发送颜色名称(颜色不多,而且它们无论如何都缓存在内存中)。

我知道我可以使用字符串类型的颜色和验证器来确保颜色存在,但是有没有办法将它转换为颜色?

4

2 回答 2

0

为什么不使用枚举类型而不是字符串?像:

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

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

我不知道我是否正确理解您的意思,但它可能包含只有您定义的值。所以你甚至不需要验证这些值。

于 2020-03-11T00:55:26.407 回答
0

如果JSON有效负载不适合Java模型,您需要实现自定义反序列化器或转换器接口。看看这个例子:

于 2020-03-14T15:31:31.153 回答