0

我正在使用休眠验证器和编辑器框架来验证我的 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;
}
4

0 回答 0