カスタムBean検証を作成しようとしていますが、何らかの理由でそれが機能していません。誰が問題を教えてくれますか?カスタムBeans検証が機能していません
私のメインクラス:
package validationtest;
import java.text.ParseException;
public class Main {
/**
* @param args the command line arguments
* @throws java.text.ParseException
* @throws java.lang.IllegalAccessException
*/
public static void main(String[] args) throws ParseException, IllegalArgumentException, IllegalAccessException {
Text msg = new Text();
System.out.println(msg.getMessage(""));
}
}
class Text {
public String getMessage(@NotEmpty(message = "Field message") String msg) {
return msg;
}
}
私の検証インタフェース
package validationtest;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.validation.Constraint;
import javax.validation.Payload;
@Documented
@Target({ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = NotEmptyImpl.class)
public @interface NotEmpty {
String message() default "";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default{};
}
私の検証は
package validationtest;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
public class NotEmptyImpl implements ConstraintValidator<NotEmpty, String> {
@Override
public void initialize(NotEmpty annotation) {
throw new RuntimeException("The field is not empty: " + annotation.message());
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
if (value == null) {
return false;
}
return !"".equals(value);
}
}
注意を実装:私はパッケージvalidation-api-1.1.0.Finalを追加しました.jarをクラスパスに追加します。
APIのみをインストールしましたか?インプラントではない? (例:Hibernate Validator) – BalusC
クラスパスにすべてのHibernate jarを追加しました:hibernate-validator-5.2.4.Final –
Java注釈は単に「マーカー」であることに注意してください。いくつかのフレームワークまたはツールは注釈を読み込み、適切な動作を実行する必要があります。この場合、プログラマチックにバリデーターを実行する方法を理解するためには、Hibernate Validatorsについて少し読む必要があると思います。 – DavidS