首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javax @NotNull注释用法

Javax @NotNull注释用法
EN

Stack Overflow用户
提问于 2017-04-28 02:15:05
回答 4查看 33.8K关注 0票数 16

我有一个简单的方法来获取给定companyId的文档列表。以下是一种方法:

代码语言:javascript
复制
@Override
public List<Documents> getDocumentList(@NotNull Integer companyId) {
    Company company = new Company(companyId);
    return this.documentRepository.findByCompany(company);
}

我希望使用Javax验证约束来确保传入的companyId不是null。但是它似乎没有任何效果,因为我能够传递一个null值,它向下流到存储库上的findByCompany调用。我还在@Valid之前添加了@NotNull,以强制验证,但这也没有起到任何作用。

我总是可以写几行代码来检查null值,但是我希望使用javax.validation注释来使代码更加可读性和简洁性。有办法使注释在方法参数上工作吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-05-02 14:47:18

要激活参数验证,只需使用@Validated对类进行注释

代码语言:javascript
复制
import org.springframework.validation.annotation.Validated;
票数 11
EN

Stack Overflow用户

发布于 2017-04-28 02:25:22

来自Java 6教程:

Bean验证模型由放在JavaBeans 组件(如托管bean )的字段、方法或类上的注释形式的约束支持。

应该对与声明的bean相关的字段进行验证,如下所示:

代码语言:javascript
复制
@Entity
@Table(name="users")
public class BackgammonUser {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long userId;

    @Column(name="username")
    @NotBlank
    private String userName;

    @NotBlank
    private String password;

    @NotNull
    private Boolean enabled;
}

BackgammonUser被认为是豆子。

票数 2
EN

Stack Overflow用户

发布于 2017-05-03 11:31:57

如果使用方法@Inject类,它就会像预期的那样工作。

代码语言:javascript
复制
@Stateless
public class MyBean{ 
    @Inject
    TestClass test;
}

代码语言:javascript
复制
public class TestClass {
    public List<Documents> getDocumentList(@NotNull Integer companyId)
    {
        //...
    }
}

当您使用空参数调用方法时,ConstraintViolationException

代码语言:javascript
复制
WFLYEJB0034: EJB Invocation failed on component MyBean for method ...:
javax.ejb.EJBException: javax.validation.ConstraintViolationException:
1 constraint violation(s) occurred during method validation.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43670862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档