私はSpring 3アノテーションベースの検証を使用しています。私は@Null
、@NotEmpty
のような注釈を知っているが、私は両方を使用する方法をおよび/またはSpringアノテーションベースの検証の条件
フィールドは、それが非空の文字列に
が含まれている必要がありnullまたはできる文字列フィールドに次の検証を追加しますOR条件?
ソリューション:@Size(min=1)
を使用して
ができますが、それはスペースを扱うことができません。したがって、null
を許可するカスタム注釈NotBlankOrNull
を追加し、空でない文字列も空白を考慮します。ありがとう@ラルフ。
はここ
@Documented
@Constraint(validatedBy = { NotBlankOrNullValidator.class })
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
public @interface NotBlankOrNull {
String message() default "{org.hibernate.validator.constraints.NotBlankOrNull.message}";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}
Validatorクラス私の注釈私はまた私のsiteにそれを更新した
public class NotBlankOrNullValidator implements ConstraintValidator<NotBlankOrNull, String> {
public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
if (s == null) {
return true;
}
return s.trim().length() > 0;
}
@Override
public void initialize(NotBlankOrNull constraint) {
}
}
です。
4つの提案と私を修正してくれてありがとう。 '@Size(min = 1)'を試しました。これは 'null'と空ではない文字列で動作します。ユーザーがスペースを入力した場合の対処方法が不思議です。 – xyz
@Ajinkya:NotBlank Annotationのソースコードを見てください。再び、それはNotNullでアノテートされます。しかし、それはnotBlankValidatorによって検証されています。(例外的に、NotBlankValidatorはnullに対してtrue(有効)を返します)。あなた自身の注釈が必要ですが、バリデータの実装を再利用することができます> @Constraint(validatedBy = {NotBlankValidator.class})@ Target ... @ Retention ... public @interface NotBlankOrNull' – Ralph
ありがとうたくさんの男:) – xyz