使用
Jakarta Bean Validation
版本2或3,我如何检查
int
或
Integer
成员字段有一组有限的值吗?
对于一个人为的过于简化的例子,考虑一下
record
代表一个桶,其容量应为50或55。
record Barrel (
UUID id ,
int capacity // Constrain to a value of either 50 or 55.
) {}
我该怎么注释呢
capacity
字段,以确保它只有
50
或
55
作为其数值?
如果
容量
字段类型为
String
,我可以用
@Pattern
使用正则表达式。
public record Barrel(
@NotNull
UUID id ,
@NotNull
@Pattern ( regexp = "50|55" ) // Constrain to a value of either "50" or "55".
String capacity
) {}
运行它。
package work.basil.example.beanval;
import jakarta.validation.ConstraintViolation;
import jakarta.validation.Validation;
import jakarta.validation.Validator;
import jakarta.validation.ValidatorFactory;
import java.util.Set;
import java.util.UUID;
public class App
{
public static void main ( String[] args )
{
App app = new App();
app.demo();
}
private void demo ( )
{
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Barrel barrel = new Barrel( UUID.fromString( "e78456ac-6f12-45ae-b8e1-c3b8193a920e" ) , "55" );
Set < ConstraintViolation < Barrel > > violations = validator.validate( barrel );
System.out.format( "INFO - Found %d violations.\n" , violations.size() );
violations.forEach( barrelConstraintViolation -> System.out.println( barrelConstraintViolation.getMessage() ) );
}
}
我怎样才能得到同样的效果
int
/
整数
至于a
字符串
?