当前位置: 首页 > 知识库问答 >
问题:

同一个类上不同层的Spring(引导)验证注释

严朝明
2023-03-14

是否可以声明性地在类的字段上指定验证约束,以便其中一些约束只适用于某些层(或者被某些层忽略)?

 public class User {

     private String name;

     @NotEmpty
     private String role;
 }

其中@notempty是JSR 303 anotation

REST API层

角色此处不存在

@RestController
public class RegisterController {

    @Autowired
    private UserService service;

    @PostMapping
    public User register(@Valid User u) {
        return service.createAppUser(u);
    }
}
@Service
public class UserService {

    @Autowired
    private UserRepo repo;

    private User createAppUser(User u) {
        u.setRole("APP_USER");
        return repo.save(u);
    }
}
    null

共有1个答案

储志业
2023-03-14

您可以使用验证组和@validated注释。

像这样:

实体

@NotEmpty(groups = Create.class)
public User register(@Validated(Create.class) User u) {
    return service.createAppUser(u);
}
 类似资料:
  • 我正在尝试使用开源用户管理服务,比如KeyClope。构建一个angularJs应用程序,该应用程序将向由KeyClope保护的RESTendpoint发送HTTP请求。我在后端使用spring boot。我能够调用endpoint并得到结果,这应该是不可能的,因为它会阻止来自未经授权来源的请求。 这是我遵循的两个链接 带角和Spring靴的钥匙斗篷 2.Github链接到KeyClope示例 由

  • 我正在尝试使用<code>Hibernate Validator</code>验证请求对象。 作为一个简单的例子,假设我要验证的对象的类有一个<code>B bObj</code>字段,其中<code>B 因此,我实现了自己的自定义,它链接到自定义类。 DTO类 我的endpoint方法签名(其中调用验证器,并设置活动组): 我的验证器类 我想要实现的是基于活动组对同一字段应用不同的验证。活动组是

  • 问题内容: 我试图在一个元素上拍两个或多个相同类型的注释,在这种情况下是方法。这是我正在使用的近似代码: 编译以上内容时,javac抱怨重复的注释: 这样根本不可能重复注释吗?从学步上讲,上面的两个@Foo实例是否由于内容不同而不同吗? 如果上述方法不可行,有哪些可能的解决方法? 更新:我被要求描述我的用例。开始。 我正在建立一种语法糖化机制,以“映射” POJO到文档存储(例如MongoDB)。

  • 我有一个关于在Guice中绑定的问题。 Guice不会知道我想要IMYInterface的哪个实现。我是否可以在这个阶段指定注释来有选择地说:我想要MyClass2的实现? 多谢

  • 使用JSON Schema 7执行验证 是否可以使用json模式进行以下验证。 object 中的“prop” 属性是属性中的依赖值。 即只有“properties.name”存在,那么该值可以添加到“prop”数组中 注意: “属性”数组可以具有{name:}类型的任何对象 “name”可以有任何可能的字符串,我事先不知道 我一直在查阅文件,但能找到一个答案。 Json Schema中还不支持此

  • null 最终产品应该如下所示: 在上面的例子中,@public instance将只有uniqueKey、gtin、printedGtin作为属性。