将Spring ResourceSupport父资源验证为子资源中的非空属性

时间:2014-09-01 05:57:11

标签: rest hibernate-validator spring-hateoas

我正在寻找指导方法来验证父管理资源(扩展Spring ResourceSupport类的AdminResource)在子管理模块资源中是否为空(@NotEmpty)(扩展Spring ResourceSupport类的AdminModuleResource)。

我理解AdminResource类还应该实现Serializable接口吗?这是使用Spring ResourceSupport资源的方式吗?

以下是我的资源:

public class AdminResource extends AbstractResource {

    private String firstname;
    private String lastname;
    @NotEmpty
    @Email
    private String email;
    private String password;
    private String passwordSalt;

}

public class AdminModuleResource extends AbstractResource {

    @NotEmpty
    private String module;
    @NotEmpty
    private AdminResource adminResource;
}

public abstract class AbstractResource extends ResourceSupport {

    @JsonProperty("id")
    private Long resourceId;

    public AbstractResource() {
    }

    public Long getResourceId() {
        return resourceId;
    }

    public void setResourceId(Long resourceId) {
        this.resourceId = resourceId;
    }

}

截至目前,@ NotEmpty验证器注释给出了错误:找不到类型的验证器......

但添加"实现Serializable"使用@NotEmpty验证器注释时,资源没有帮助,异常仍然存在。

public abstract class AbstractResource extends ResourceSupport implements Serializable {
}

当然,注释掉@NotEmpty验证器注释会使Maven构建成功。

感谢任何指示提示!

亲切的问候,

的Stephane

1 个答案:

答案 0 :(得分:1)

@NotEmpty仅支持CharSequences(String),Collections,Maps和数组。它或者检查字符串或集合/数组是否为空。什么甚至意味着AdminResource不为空。你的意思是@NotNull?

如果对管理员资源拥有@NotEmpty确实在语义上有意义,那么你必须为它实现一个自定义的ConstraintValidator并通过XML注册它(参见http://beanvalidation.org/1.1/spec/#xml-mapping-constraintdefinition)。