JavaSpringweb-使用验证器将子属性转换为对象



我使用的是带有控制器的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。然而,我希望发件人能够只发送颜色名称(颜色不多,而且它们都缓存在内存中(。

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

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

  • Jackson将JSON对象字段反序列化为单个列表属性

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

public enum ColorName {
Red, Yellow, Blue, ...
}
@Data
public class Color {
private ColorName name;
private long value;
private int rating;
}

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

相关内容

  • 没有找到相关文章

最新更新