我有一个简单的方法来获取给定companyId
的文档列表。这是方法:
@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
注释来使代码更具可读性和简洁性。有没有办法让注释适用于方法参数?
答案 0 :(得分:6)
要激活参数验证,只需使用@Validated
import org.springframework.validation.annotation.Validated;
答案 1 :(得分:1)
来自Java EE 6教程:
Bean验证模型受到约束形式的支持 放置在JavaBeans的字段,方法或类上的注释 组件,,例如托管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;
}
BackgammonUser被认为是一个bean。
答案 2 :(得分:0)
如果您使用您的方法@Inject
一个类,它的工作正常。
@Stateless
public class MyBean{
@Inject
TestClass test;
}
和
public class TestClass {
public List<Documents> getDocumentList(@NotNull Integer companyId)
{
//...
}
}
使用null参数调用方法时 ConstraintViolationException
:
WFLYEJB0034: EJB Invocation failed on component MyBean for method ...:
javax.ejb.EJBException: javax.validation.ConstraintViolationException:
1 constraint violation(s) occurred during method validation.
答案 3 :(得分:-1)
@NotNull Annotation,