当验证器返回强制时,我如何强制我的自定义ConstraintValidator停止执行方法?

时间:2014-01-28 11:25:54

标签: java java-ee ejb ejb-3.0 stateless-session-bean

我做了一个自定义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!.."

此致

0 个答案:

没有答案