ゼロを含む数値フィールドに正の整数のみを許可したいのですが、JSR 303を使用してこの検証を定義するにはどうすればよいですか?.
私は試した
@Min(value=0 message = "msg1")
-しかし、1.2のようなfloat値を許可します。
@Digits(fraction = 0, integer = 10, message ="msg2")
-負の値を受け入れます。
@Min(value=0, message = "msg1" )
@Digits(fraction = 0, integer = 10, message ="msg2")
-正常に機能しますが、両方のメッセージ、つまりmsg1
およびmsg2
が表示されます。
助言がありますか?
ありがとう!
自然数を探しているようですが、正規表現パターンを使用して目的の出力を取得できると思います。何かのようなもの
@Pattern(regexp = "[\\s]*[0-9]*[1-9]+",message="msg")
注釈@Min
Bean内:
@Min(value = 0L, message = "The value must be positive")
private Double value;
Hibernate-validatorを使用する場合は、@ConstraintComposition(AND)
を使用して、3番目のオプションの@Min
と@Digits
を組み合わせたカスタム制約を作成できます。 @ReportAsSingleViolation
を追加すると、カスタムメッセージのみが表示されます。
正の数には以下のような範囲注釈を使用する方が良い
@Range(min = 0l, message = "Please select positive numbers Only")
負の数の場合
@Range(min = -9223372036854775808l, max = 0l, message = "Please select Negative numbers Only")
これは回答のコード例です https://stackoverflow.com/a/41675990/258544 上記
@Documented
@Min(value=0, message = "add a min msg" )
@Digits(fraction = 0, integer = 10, message ="add a digit msg")
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {})
@ReportAsSingleViolation
public @interface NumberFormatValidator {
String message() default "invalid number";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
制約構成 http://docs.jboss.org/hibernate/validator/4.3/reference/en-US/html_single/#validator-customconstraints-compound と@ReportAsSingleViolation
両方のメッセージのdsiplayを回避する