0
我正在開發使用Java和Spring引導休息服務,我有一個關於用戶輸入與javax.validation的驗證問題。
假設我有名字和年齡屬性的用戶模型。
而且還我有兩個端點(A和B)假設,並在端點A我只需要校驗的名稱和端點B我需要驗證只是年齡。
我現在面臨的問題是,使用javax.validation我需要在兩個端點驗證兩個屬性。有沒有辦法只驗證我需要在某個端點驗證的字段?或者某種方式來禁用端點中某些屬性的驗證?
例子
用戶 公共類用戶{
@NotEmpty(message="You need to pass the name parameter")
private String name;
@NotEmpty(message="You need to pass the age parameter")
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
用戶RestController
@RestController
@RequestMapping("/v1/user")
public class UserController {
@Autowired
private User _user;
@RequestMapping(value = "/endpoint-a", method = RequestMethod.POST, consumes = {MediaType.APPLICATION_JSON_VALUE}, produces = {MediaType.APPLICATION_JSON_VALUE})
@ResponseBody
public ResponseEntity<?> doPostEndpointA(@Valid @RequestBody User user) {
// only validate the user name
}
@RequestMapping(value = "/endpoint-b", method = RequestMethod.POST, consumes = {MediaType.APPLICATION_JSON_VALUE}, produces = {MediaType.APPLICATION_JSON_VALUE})
@ResponseBody
public ResponseEntity<?> doPostEndpointB(@Valid @RequestBody User user) {
// only validate the user age
}
}
春季啓動具有斷言類它會幫助你。只要寫第一行控制器方法,如Assert.notNull(user.getName(),「你需要傳遞名稱參數」);請參閱doc這裏 - https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/util/Assert.html –
謝謝!它幫助我很多! –