【问题标题】:Bean validation can validate both size of a List and maximum length of each elementsBean 验证可以验证 List 的大小和每个元素的最大长度
【发布时间】:2022-07-01 17:09:10
【问题描述】:

如何设置一个 bean 验证约束,一个 List 应该至少包含 1 个并且最多包含 4 个元素,同时检查每个元素的最大长度

以下注解仅适用于minItems、maxItems,而如何约束每个元素的最大长度

@Size(最小=1,最大=4) 私有列表列表;

“列表”:[ "字符串 1", "字符串 2", “字符串 3” ]

谢谢

【问题讨论】:

标签: java json bean-validation


【解决方案1】:

实际上,注释只对对象列表起作用。所以我建议添加一个新类并定义一个具有@Size(min= 10) 的字符串字段。 这就是我的意思:

public class InputString{
       @Size(min = 10, message =  "{validation.name.size.too_long}")
       private String input;
}

然后使用它:

@Size(min=1, max=4)
 private List<InputString> list;

【讨论】:

  • 而传入的json有效载荷结构为:"StringList": ["String1", "String2", "String3"],不能将元素更改为Java对象。
  • 所以你必须迭代列表并检查每个字符串的长度。
【解决方案2】:

可以将方法添加到将成为验证一部分的对象。

@AssertTrue
private boolean isList() {
    return list.stream().noneMatch(s -> s.length() > 20 || s.length() < 3);
}

【讨论】:

    猜你喜欢
    • 2017-10-21
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    相关资源
    最近更新 更多