Walidacja Set<Integer> za pomocą adnotacji

0

da się jakoś przy pomocy adnotacji zwalidować Set<Integer> aby można było podawać tylko liczby od 1 do 5? Skleiłem coś takiego ale nie działa :)

@Pattern(regexp="[1-5]+")
private Set<Integer> keys;
2

Ale @Pattern działa tylko na String.

0

@TomRiddle: ok, czyli jedyna opcja to sprawdzenie gdzieś dalej a nie przy deklaracji pola?

0

@biurostron: Zobacz czy takie cos Ci przejdzie: Set<@Min(1) @Max(5) Integer> keys

5

Daj metodę dodającą element do seta w którym będziesz walidował dodawane itemy.

0

@yarel: to działa ok tylko jeszcze powiedz czemu nie działa w wewnątrz klasy np.:

public class A {
	@NotEmpty
	private String abc;

	@NotEmpty
	private B b;

	@Getter
	@Setter
	public static class B {
		Set<@Min(1) @Max(5) Integer> keys;
	}
}

jak podam pole w klasie A to działa, natomiast w B już nie

2

@biurostron: jedyne adontacje z których korzystałem, to @param, @see, @link @return w java docach, więc zgaduję. Może brakować Ci @Valid gdzieś obok settera.

0

@yarel: coś nie chce mimo to chwycić :(

7

Masakra z tymi adnotacjami, nawet nie rozumiesz jak to sie dzieje, ze są odpalane ;) Zwaliduj sobie ten Set w jakiejs klasie, to sa 2 linijki kodu.

boolean isValid = keys.stream()
.allMatch(x -> x >= 1 && x <= 5);

12

screenshot-20220211213213.png

1

A nie lepiej legitnie posiłkować się Konstruktorem?

1 użytkowników online, w tym zalogowanych: 0, gości: 1