我做了一个自定义ConstraintValidator
,当我将其注释分配给任何方法时它都有效,但我注意到它只会使方法返回500内部服务器错误并阻止方法打印或返回任何输出,但我注意到这个方法中的任何代码仍能正常工作! ,但没有退货或打印! ,
因此,当验证返回false时,我想强制我的自定义验证器完全停止执行该方法。
我的自定义验证器示例
APIAuth
@Documented
@Constraint(validatedBy = APIAuthValidator.class)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface APIAuth {
String message() default "";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
APIAuthValidator.class的例子
public class APIAuthValidator implements ConstraintValidator<APIAuth, String> {
@Context
private HttpServletRequest client;
@Override
public void initialize(APIAuth constraintAnnotation) {
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
return false;
}
我的注射方法示例:
@Stateless
@Path("Accepted")
public class AcceptedAPI {
@Context
private UriInfo context;
@Context
private HttpServletRequest client;
@PersistenceContext (unitName="APIPU") EntityManager EM;
@GET
@APIAuth
@Produces(MediaType.TEXT_PLAIN)
public String getIps() {
System.out.println("Code Execution Still Work!..");
return "Test";
}
}
在之前的代码中,虽然@APIAuth
将停止打印字符串Test
,但其他代码仍然有效,方法将打印"Code Execution Still Work!.."
!
此致