gpt4 book ai didi

java - 如何使用基于组的@Validated 注释验证方法参数

转载 作者:搜寻专家 更新时间:2023-10-31 20:10:25 25 4
gpt4 key购买 nike

我有一个实体 XYZ.java

@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;

并且有一个接口(interface)XYZCRUD.java可以对XYZ.java进行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;

但是它根本不会触发验证。我在从字段和触发器注释中删除组属性后进行了尝试。

结论:@Validated 不会触发@NotNull

问题:

  1. 为什么@Validated 不触发javax 的@NotNull?我在做什么吗 错了还是不支持?
  2. 还有别的办法吗?无法实现自定义 validator

注意:如果它与此有关,我也在使用 lombok。

最佳答案

@mayank-vats 如果你想将一个组应用到特定的方法(不是所有的公共(public)方法),你可以使用:

@Validated
public class MyClass {

@Validated({Group1.class})
public myMethod1(@Valid Foo foo) { ... }

@Validated({Group2.class})
public myMethod2(@Valid Foo foo) { ... }

...
}

关于java - 如何使用基于组的@Validated 注释验证方法参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31826981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com