我有一个Java Server Faces Web应用程序,我不确定如何处理验证。
在我看来,验证应该在业务逻辑层中完成。业务逻辑层在Web表示(jsf)和REST-API中使用。
目前我正在使用提供的验证器在jsf层内进行验证。我认为在大多数情况下只会重复代码。有没有办法避免这种代码重复? java服务器面孔是否能够使用我在业务逻辑层中抛出的验证异常?
Bean验证就是针对这种情况而发明的。
您使用约束来注释您的实体,这些约束将受到您的业务逻辑(通过EJB,CDI和/或JPA)以及JSF的支持。
对于少量的验证,您无法通过Bean验证表达,但真正与业务相关;是的,抛出异常,在你的支持bean中捕获它并设置相应的Faces消息(提示:使用OmniFaces' Messages使这更容易)。同样,对于您无法使用Bean验证表达的少量验证以及强烈面向视图的验证;使用JSF本机验证器。