我正在使用hibernate验证器和Editor框架来验证我的GWT项目中对DTO的输入。
我遇到的问题是用户在文本框中输入一个字符串,该字符串应该被验证为整数。我试图应用hibernate-validator注释来自动使其工作,但似乎我遗漏了一些东西。
我的DTO:
public class MyDto {
@Min(value = 1, message = "Radius must be at least 1 meter.")
private int radius = 100;
...
}
我正在使用GWT IntegerBox读取半径的值,这在输入-1等值时可以正常工作,但在输入的值不是整数时则不行,例如“hi”。 / p>
我发现验证这一点的唯一方法是在IntegerBox上发出getValueOrThrow(),然后手动设置错误。有没有办法直接使用hibernate-validator注释表达这个?
我尝试过使用Integer和@NotNull,@ NotEmpty,@ Valid。
我当前的代码看起来像这样:
try {
radiusBox.getValueOrThrow();
}
catch (final ParseException e) {
radiusDecorator.setErrorText("Invalid radius value.");
return;
}
final MyDto dto = editorDriver.flush();
final Set<ConstraintViolation<?>> violations = clientValidator.validate(dto);
if (!violations.isEmpty()) {
editorDriver.setConstraintViolations(violations)
return;
}