前端框架JSF中的Bean验证是否被视为服务器端验证?

时间:2018-07-06 08:50:56

标签: security jsf primefaces

我正在使用JavaServer Faces开发一个小型前端应用程序项目,我必须实现客户端和服务器端验证。我也在使用Prime Faces,该框架具有客户端验证和Bean验证。我的问题是这样的:

是否将bean验证视为服务器端,因为用户数据是在后备bean(受管bean)中验证的,或者由于JSF在前端充当MVC模型,因此不将其视为服务器端,应使用其他技术。 / p>

假设Bean验证不是正确的服务器端验证,那么实现服务器端验证的最佳方法是什么。

欢迎任何建议和澄清。

谢谢!

2 个答案:

答案 0 :(得分:3)

“ Bean验证”是一种适当的服务器端验证,它是可在JSF中使用的众多验证之一。 JSF早就在视图中拥有自己的验证,但是自从引入了Bean验证JSR-303以来,它也受支持,并且可以从模型的“视图”中删除许多验证。

Bean验证与在以下情况下在托管Bean中进行手动验证不同,并且不应与之混淆:调用设置器或操作方法。然后,JSF的“验证”阶段已经通过,因此返回消息变得更加困难。

由于在JSF-303中无法(轻松)完成所有事情,因此有时仍需要在JSF特定的验证中进行其他验证。

PrimeFaces客户端验证应被视为服务器端验证的补充,它不能替代它们。它可以使用许多现有的JSF和JSR-303验证,并且可以在客户端自动执行它们,而无需您进行任何工作。对于更复杂的验证,还应根据客户端框架开发自定义的客户端验证。

从PrimeFaces文档中:

  

PrimeFaces客户端验证(CSV)框架是最完整的   和针对JavaServer Faces和Java EE的高级CSV解决方案。 CSV   支持JSF并非易事,要集成一个   作为JSF的第三方JavaScript插件有其自己的生命周期,概念   如转换然后验证,部分处理,面部消息   还有很多。 JSF的真实CSV应该与服务器端兼容   实现,应该做JSF做的事情,以便用户不要   在客户端和服务器端体验不同的行为。

     
      
  • 与服务器端实现兼容。
  •   
  • 转换和验证发生在客户端。
  •   
  • 对Ajax的部分过程和更新支持。
  •   
  • I18n支持以及特定于组件的消息。
  •   
  • 用于消息组件的客户端渲染器。
  •   
  • 易于编写自定义客户端转换器和验证器。
  •   
  • 全局或基于组件的启用/禁用。
  •   
  • 高级Bean验证集成。
  •   
  • 使用HTML5占用资源少。
  •   

因此,这不是客户端或服务器端的问题,而是您是否想要/可以使用客户端验证来增强用户体验,所以JSF的一些缺点(很少)(往返验证) )减少。

答案 1 :(得分:0)

在服务器上的Java代码(托管Bean)中完成的验证是服务器端验证。 验证的另一种直接方式可以是f:validate(Refer