我必须在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,因此不会被触发。
关于java - 具有@PathVariable和@RequestParam的自定义 validator ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60918220/