RT.
我想校验InnerValidatedRequest这个请求里,InnerValidatedRequestData成员对象里面的字段houseName和houseAddress,用SpringMVC的@Validated注解的话,还需要在其他的什么地方加上什么啊?
只是现在这样的话,试了下并没有校验到这两个参数。。
--------------------- 部分代码如下 ----------------------
CommonController.java
@RestController
@RequestMapping(consumes = "application/json;charset=UTF-8", produces = "application/json;charset=UTF-8")
public class CommonController {
/**
* test for nested inner @Validated
* 这里Exception统一在外部处理
*/
@PostMapping("/inner/validated")
public String innerValidated(@RequestBody @Validated InnerValidatedRequest request) {
return "GOT!";
}
}
InnerValidatedRequest.java
@Getter
@Setter
public class InnerValidatedRequest extends BaseUserRequest {
private InnerValidatedRequestData reqData;
private String otherParma1;
private String otherParma2;
}
InnerValidatedRequestData.java
@Getter
@Setter
public class InnerValidatedRequestData implements BaseRequestData {
@NotBlank(message = "小区名称不能为空")
private String houseName;
@NotBlank(message = "房屋地址不能为空")
private String houseAddress;
}
问这个问题,主要是因为这边有好多接口是要向后台系统发送http请求的,如果能有个对象能直接变成发送的请求,能减少好多工作。比如,我能直接把InnerValidatedRequestData作为请求发送到后台系统去获取想要的数据。。
嵌套校验?试试在reqData变量上加
@Valid
(javax.validation.Valid
),如下:补充:其实可以看一下
javax.validation
包,像constraints
就是常用的用于校验一般属性的注解,而javax.validation.Valid
的源码注释如下:中文翻译:
符合要求。