我有一个 Java Server Faces Web 应用程序,但我不确定如何处理验证。
我认为验证应该在业务逻辑层中完成。业务逻辑层在 Web 表示 (jsf) 和 REST-API 内部使用。
目前我也在使用提供的验证器在 jsf 层内进行验证。我认为在大多数情况下这只是代码的重复。有什么办法可以避免这种代码重复吗? java服务器端是否能够使用我在业务逻辑层中抛出的验证异常?
最佳答案
Bean 验证正是针对这种情况而发明的。
您用约束注释您的实体,您的业务逻辑(通过 EJB、CDI 和/或 JPA)以及 JSF 将遵守这些约束。
对于无法通过 Bean Validation 表达但真正与业务相关的少量验证;是的,抛出一个异常,在您的支持 bean 中捕获它并设置相应的 Faces 消息(提示:使用 OmniFaces' Messages 使这更容易)。同样,对于无法使用 Bean Validation 表达且强烈面向 View 的少量验证;使用 JSF native 验证器。
关于validation - Java 服务器端面 : Validation only in business logic tier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20558913/