我有一个简单的方法来获取给定公司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。验证注释,使代码更具可读性和简洁性。有没有办法让注释在方法参数上工作?
如果您@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.
来自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。
要激活参数验证,只需使用@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的方法上使用是否合适或良好,但可能是由于未来的开发人员错误。 谢谢。