我正在使用休眠验证器和编辑器框架来验证我的 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”)则无法正常工作。
我发现验证这一点的唯一方法是在 IntegerBox 上发出 getValueOrThrow() ,然后手动设置错误。有没有办法直接使用 hibernate-validator 注释来表达这一点?
我尝试过使用整数和@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;
}