@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class XYZ extends BaseEntity implements Serializable {
@NotNull (groups = {Groups.Insert.class,Groups.Delete.class,Groups.Update.class,Groups.Select.class})
private String X;
在XYZ.java上有一个接口XYZCRUD.javato做CRUD操作
@Validated
public interface XYZCRUD {
public int insert(@Valid XYZ entity) throws SomeException;
虽然javax的@Valid适用于@NotNull验证,但它不支持将验证组作为注释属性从我触发验证的方法中传递.
所以我尝试使用@Validated注释,它允许通过像这样的属性“值”传递组
@Validated
public interface XYZCRUD {
public int insert(@Validated(value=SomeGroup.class) XYZ entity) throws SomeException;
但是它根本不会触发验证.我在从字段中删除groups属性后尝试,也从触发器注释中删除.
结论:@Validated不会触发@NotNull
问题:
>为什么@Validated不会触发javax的@NotNull?我在做什么
错了还是不支持呢?
>还有其他方法吗?无法实现自定义验证器
注意:如果它与此有关,我也使用lombok.
就我而言,这是在方法级别验证被截获和验证时发生的情况
来自Spring的MethodValidationInterceptor的文档
Validation groups can be specified through Spring’s Validated annotation at the type level of the containing target class,applying to all public service methods of that class. By default,JSR-303 will validate against its default group only.
这意味着将在类级别提及的ONLY组进行验证,它们将用于所有公共方法.
@Validated(value=SomeGroup.class)//this will be used as group for all methods being validated
public interface XYZCRUD {
public int insert(@Valid XYZ entity) throws SomeException;
public int delete(@Valid XYZ entity) throws SomeException;
我不明白这种实施的原因,但这就是文档所说的.如果有人知道原因,请发表评论.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。