[英]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.