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

Javax@NotNull注释用法

陶飞英
2023-03-14

我有一个简单的方法来获取给定公司ID的文档列表。方法如下:

@Override
public List<Documents> getDocumentList(@NotNull Integer companyId) {
    Company company = new Company(companyId);
    return this.documentRepository.findByCompany(company);
}

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

我总是可以写几行代码来检查null值,但我想使用javax。验证注释,使代码更具可读性和简洁性。有没有办法让注释在方法参数上工作?

共有3个答案

谭煜
2023-03-14

如果您@Inject使用您的方法创建一个类,则它会按预期工作。

@Stateless
public class MyBean{ 
    @Inject
    TestClass test;
}

public class TestClass {
    public List<Documents> getDocumentList(@NotNull Integer companyId)
    {
        //...
    }
}

ConstraintViolationException当您使用null参数调用方法时:

WFLYEJB0034: EJB Invocation failed on component MyBean for method ...:
javax.ejb.EJBException: javax.validation.ConstraintViolationException:
1 constraint violation(s) occurred during method validation.

赫连心思
2023-03-14

来自Java EE 6教程:

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

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

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

双陆棋用户被认为是一个bean。

裘臻
2023-03-14

要激活参数验证,只需使用@Validated

import org.springframework.validation.annotation.Validated;

 类似资料:
  • 问题内容: 我刚刚开始在Java 8中使用注释,并得到了一些意外的结果。 我有这样的方法: 我编写了一个JUnit测试,为参数searchList传递了空值。我原以为会发生某种类型的错误,但好像没有注释就通过了。这是预期的行为吗?据我了解,这是允许您跳过编写样板空检查代码。 对于@NotNull应该做什么的解释将不胜感激。 问题答案: 和自己做什么。它们应该充当文档工具。 该注释提醒您在以下情况下

  • 我编写了一个JUnit测试,为参数searchingList传入null值。我原以为会发生某种类型的错误,但结果好像注释不在那里一样。这是意料之中的行为吗?根据我的理解,这是允许您跳过编写样板空校验代码。 如果能解释一下@NotNull到底应该做什么,将会非常感谢。

  • 问题内容: 我有一个终结点实现,即将一个对象传递给参数列表。我正在尝试使用@NotNull批注来验证该对象是否为null。 如果该对象被验证为非null,则端点将仅返回200 OK响应。但是,当我使用指定的路径向该终结点发出请求时,体内没有任何内容时,不会引发任何错误。相反,我能够检索200响应(即使我在返回响应之前检查对象是否为null,也表明是这种情况)。 有人可以指导我如何以正确的方式验证对

  • 我在使用IntelliJ IDEA 2020.2时启用了检查“@NotNull/@Nullable problems”。在编写自定义ThreadFactory时,我在的参数上收到IntelliJ IDEA检查警告“Not annotated parameter overrides@NotNull parameter”: 爪哇。util。同时发生的ThreadFactory接口不注释。IDEA的代码

  • 我想验证属性firstName和lastName。但我不想每次都重复注释。 如何创建自定义注释,使代码如下所示 验证也是一样的

  • 这是我在这里的第一个问题,我对Java很陌生,如果这是一个愚蠢的问题,请原谅。 我正在使用JavaDocs和注释从内部“记录”我的应用程序的预期行为,但我只是好奇在一个永远不会返回null的方法上使用是否合适或良好,但可能是由于未来的开发人员错误。 谢谢。