簡體   English   中英

帶有 @PathVariable 和 @RequestParam 的自定義驗證器

[英]Custom Validator with @PathVariable and @RequestParam

我必須在 RestController 中驗證 @PathVariable 和 @RequestParam 但那沒有發生,如果我必須在 xml 文件或其他地方添加一些內容,請告訴我。 如果我遺漏了什么,有人可以讓我知道。 下面是我的粗略程序。

   @RequestMapping("messages")
    @RestController
    @Validated
    public class MessageResource {

        MessageService service = new MessageService();

        @GET
        @Produces(MediaType.APPLICATION_JSON)
        public String getMessage(@Valid @Test @RequestParam("year") int year,@Valid @Test @QueryParam("start") int start,@Valid @Test @QueryParam("size") int size) {
            return "Hello";
        }

        @GET
        @RequestMapping("/test/{year}/{start}/{size}")
        @Produces(MediaType.APPLICATION_JSON)
        public String getMessage1(@Valid @Test @PathVariable("year") int year,@Valid @Test @PathVariable("start") int start,@Valid @Test @PathVariable("size") int size) {
            return "Hellooooooooo";
        }
    }


import java.lang.annotation.*;
import javax.validation.*;

@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = Test.TestImpl.class)
public @interface Test {
    String message() default "error";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};

    class TestImpl implements ConstraintValidator<Test, String> {
        @Override
        public void initialize(Test arg0) {
            System.out.println("testingggggggggg");
        }

        @Override
        public boolean isValid(String login, ConstraintValidatorContext arg1) {
            return Integer.parseInt(login) > 10;
        }

    }
}

您的驗證器被定義為使用 String 類型驗證 RequestParam 或 PathParam。 你的類型是 int 所以它不會被觸發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM