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



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

Bean 验证是否被视为服务器端,因为用户的数据是在后备 Bean(Managed Bean(中验证的,或者由于 JSF 在前端用作 MVC 模型,因此不考虑服务器端,应使用其他技术。

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

欢迎任何建议和澄清。

谢谢!

'Bean validation' 是一个正确的服务器端验证,它是您可以在 JSF 中使用的众多验证之一。JSF 长期以来在视图中有自己的验证,但自从 JSR-303(Bean 验证(被引入以来,它也得到了支持,并且许多验证可以从"视图"中删除到模型。

Bean 验证与在托管 Bean 中进行手动验证(例如调用 setter 或操作方法(不同,不应与在托管 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(验证往返(的一些(极少数(缺点。

在服务器上的 Java Code(Managed Bean( 中完成的验证是服务器端验证。 另一种直接的验证方式可能是f:valid(参考(

最新更新