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 アノテーションを直接使用してこれを表現する方法はありませんか?
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;
}