提问者:小点点

SpringMVC嵌套对象验证


我的控制器中有以下代码

@RequestMapping(value = "employee/update", method = RequestMethod.POST, headers = "Accept=application/json")
    public UpdateEmployeeResponse updateEmployee(@RequestBody @Valid @ModelAttribute("updateEmployeeRequest") UpdateEmployeeRequest updateEmployeeRequest, BindingResult result) {

我的请求对象如下

public class UpdateEmployeeRequest {
@Valid
@NotNull
private Employee employee;
.
.

public class Employee {
@NotNull
protected String id;
@NotNull
protected String name;
.
.

当我发送JSON请求时(缺少id)

{employee:{name:"cc",phone:"9876543210",dept:"dpt"}}

我的请求没有得到Spring的验证(即使缺少字段也不会显示任何错误)。我已经通过了以下线程,但运气不好。

  • link 1
  • link 2

有人能帮忙吗?


共2个答案

匿名用户

要无例外地忽略JSON输入中的任何未知属性,请尝试使用@JsonIgnoreProperties(不知道=true)

试试这个

Employee.java

@JsonIgnoreProperties(ignoreUnknown = true)
public class Employee
{
 @NotNull
 protected String id;
 @NotNull
 protected String name;
 .
 .

UpdateEmployeeRequest.java

@JsonIgnoreProperties(ignoreUnknown = true)
public class UpdateEmployeeRequest {
 @Valid
 @NotNull
 private Employee employee;
 .
 .

匿名用户

您没有提及项目中是否有验证器。在Maven中添加这些依赖项:

        <!-- Bean validation -->        
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>1.1.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>5.0.1.Final</version>
     </dependency>