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;
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;
Ale @Pattern
działa tylko na String
.
@TomRiddle: ok, czyli jedyna opcja to sprawdzenie gdzieś dalej a nie przy deklaracji pola?
@biurostron: Zobacz czy takie cos Ci przejdzie: Set<@Min(1) @Max(5) Integer> keys
Daj metodę dodającą element do seta w którym będziesz walidował dodawane itemy.
@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
@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.
@yarel: coś nie chce mimo to chwycić :(
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);
A nie lepiej legitnie posiłkować się Konstruktorem?