使用@Validated和@Valid 解决list校验的问题

目录
  • @Validated和@Valid 解决list校验
  • @validated验证List参数
    • 写了个接口
    • ValidList

@Validated和@Valid 解决list校验

在 Controller 类上 加上@Validated。在需要校验的参数上加上 @Valid 。

就可以校验list里的实体类的属性

@validated验证List参数

写了个接口

?

1

2

@GetMapping("/do")

public int doSth(@RequestBody @Validated(MyGroup.class) List<Bean> myBean)

发现@validated完全没用,但是用@valid可以,但是我要用分组功能必须用@validated,在stackOverflow上找到了解决方案:

在项目里添加一个ValidList类即可,此类通用,可以在全部由此需求的项目(jdk1.8)中添加,无需改动,有ValidList类之后只要将接口方法参数中的List改成ValidList即可:

?

1

2

@GetMapping("/do")

public int doSth(@RequestBody @Validated(MyGroup.class) ValidList<Bean> myBean)

注意:

如果你不用lombok,就把@Data注解去掉,给类中的list成员加上getter,setter方法即可

ValidList

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

import lombok.Data;

import javax.validation.Valid;

import java.util.*;

@Data

public class ValidList<E> implements List<E> {

@Valid

private List<E> list = new LinkedList<>();

@Override

public int size() {

return list.size();

}

@Override

public boolean isEmpty() {

return list.isEmpty();

}

@Override

public boolean contains(Object o) {

return list.contains(o);

}

@Override

public Iterator<E> iterator() {

return list.iterator();

}

@Override

public Object[] toArray() {

return list.toArray();

}

@Override

public <T> T[] toArray(T[] a) {

return list.toArray(a);

}

@Override

public boolean add(E e) {

return list.add(e);

}

@Override

public boolean remove(Object o) {

return list.remove(o);

}

@Override

public boolean containsAll(Collection<?> c) {

return list.containsAll(c);

}

@Override

public boolean addAll(Collection<? extends E> c) {

return list.addAll(c);

}

@Override

public boolean addAll(int index, Collection<? extends E> c) {

return list.addAll(index, c);

}

@Override

public boolean removeAll(Collection<?> c) {

return list.removeAll(c);

}

@Override

public boolean retainAll(Collection<?> c) {

return list.retainAll(c);

}

@Override

public void clear() {

list.clear();

}

@Override

public E get(int index) {

return list.get(index);

}

@Override

public E set(int index, E element) {

return list.set(index, element);

}

@Override

public void add(int index, E element) {

list.add(index, element);

}

@Override

public E remove(int index) {

return list.remove(index);

}

@Override

public int indexOf(Object o) {

return list.indexOf(o);

}

@Override

public int lastIndexOf(Object o) {

return list.lastIndexOf(o);

}

@Override

public ListIterator<E> listIterator() {

return list.listIterator();

}

@Override

public ListIterator<E> listIterator(int index) {

return list.listIterator(index);

}

@Override

public List<E> subList(int fromIndex, int toIndex) {

return list.subList(fromIndex, toIndex);

}

}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/u014003446/article/details/100022680

本文链接:https://my.lmcjl.com/post/13734.html

展开阅读全文

4 评论

留下您的评论.