如何对@PathVariable参数进行valid
时间: 2023-11-07 07:53:54 浏览: 87
可以使用Spring提供的校验器(Validator)来对@PathVariable参数进行校验。首先,你需要创建一个实现了Validator接口的自定义校验器类,并重写validate方法,在该方法中编写校验逻辑。然后,在处理方法中,使用@InitBinder注解将自定义校验器注册到WebDataBinder中。最后,在处理方法的参数上使用@Validated注解,以启用对@PathVariable参数的校验。
下面是一个示例代码:
引用:import org.springframework.validation.ObjectError;
```java
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
import org.springframework.stereotype.Component;
@Component
public class MyPathVariableValidator implements Validator {
@Override
public boolean supports(Class<?> clazz) {
return String.class.equals(clazz);
}
@Override
public void validate(Object target, Errors errors) {
String username = (String) target;
// 校验逻辑
if (username.length() < 3) {
errors.rejectValue("username", "username.tooShort", "用户名长度不能少于3个字符");
}
}
}
@RestController
public class UserController {
@Autowired
private MyPathVariableValidator pathVariableValidator;
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.addValidators(pathVariableValidator);
}
@RequestMapping("/users/{username}")
public String userProfile(@Validated @PathVariable String username) {
// 处理方法逻辑
return "user " + username;
}
}
```
在上述示例中,首先定义了一个MyPathVariableValidator类,实现了Validator接口,并在validate方法中编写了校验逻辑。然后,在UserController类中,使用@Autowired注解将MyPathVariableValidator注入,然后通过@InitBinder注解将其注册到WebDataBinder中。最后,在处理方法的@PathVariable参数上使用@Validated注解,以启用校验。
阅读全文