gpt4 book ai didi

java - Hibernate 局部变量的自定义注释

转载 作者:太空宇宙 更新时间:2023-11-04 12:44:22 26 4
gpt4 key购买 nike

我正在尝试为局部变量创建一个自定义注释,其功能与@NotNull @NotEmpty@NotBlank 几乎相同。我无法使用这些注释,因为它们不适用于局部变量,因此我决定制作自己的注释。这是注释:

import controllers.validation.validator.NotNullOrEmptyValidator;

import javax.validation.Constraint;
import javax.validation.Payload;
import javax.validation.ReportAsSingleViolation;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.lang.annotation.*;

import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.LOCAL_VARIABLE;

@Target(LOCAL_VARIABLE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = NotNullOrEmptyValidator.class)
@ReportAsSingleViolation
public @interface NotNullOrEmpty {
String message() default "something is wrong!";
Class<?>[] groups() default {};

Class<? extends Payload>[] payload() default {};

@Target(LOCAL_VARIABLE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@interface List {
NotNullOrEmpty[] value();
}
}

这是 validator :

import controllers.validation.constraints.NotNullOrEmpty;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

public class NotNullOrEmptyValidator implements ConstraintValidator<NotNullOrEmpty, Object> {
@Override
public void initialize(NotNullOrEmpty constraintAnnotation) {

}

@Override
public boolean isValid(Object value, ConstraintValidatorContext context) {
return value!=null && !value.toString().isEmpty();
}
}

但由于某种原因,当我尝试像这样使用它时:

public class Foo {
public void doSomething(HttpServletRequest request) {
@NotNullOrEmpty(message = "headerpiece cannot be empty or null.")
String headerPiece = request.get("something");
}
}

它就是不着火。我尝试过使用空字符串在 header 中传递该 something 值,并尝试根本不传递它,但注释没有触发, validator 也没有触发。我在这里做错了什么?

最佳答案

确保将其部署为 Web 应用程序。就我而言,它不会针对测试用例触发,而是在实际的 Web 应用程序中触发。

关于java - Hibernate 局部变量的自定义注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36488984/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com