淮安网站建设哪家好,作业帮小程序入口,笔记wordpress,网站建设立项申请报告jsf表单验证嗨#xff0c;大家好#xff01; 尽管标题强调验证一词#xff0c;但本文实际上是关于JSF生命周期的。 那是因为我相信#xff0c;真正了解生命周期的最简单方法之一就是通过做出我们一直在做的事情#xff1a;验证用户输入。 通常#xff0c;了解所谓的JSF… jsf表单验证 嗨大家好 尽管标题强调验证一词但本文实际上是关于JSF生命周期的。 那是因为我相信真正了解生命周期的最简单方法之一就是通过做出我们一直在做的事情验证用户输入。 通常了解所谓的JSF生命周期是使初级开发人员与众不同的地方这些初级开发人员主要复制并粘贴他们在其面前看到的所有内容而高级开发人员则可以在面对不常见的情况而不会损害代码质量的情况下“赞叹”它。 。 通常当我面试某个声称拥有JSF经验并且似乎不了解生命周期的人时我认为这是一个不好的信号:) 总览 如果您曾经读过一本关于JSF的书那么您可能已经看过以下图片 此图显示了生命周期中的所有阶段。 关于本文感兴趣的内容其中三个对我们最有用 流程验证 更新模型值和调用应用程序 。 让我们假设一个假设的应用程序在其中注册用户。 在其中我们将询问用户的姓名和年龄 为了“处理”上面的表单我们可能需要两个工件一个接受请求的Managed Bean和一个表示正在注册的Person的实体对象 证实 直截了当地让我们假设我们有一个要求说明“年龄”字段不能接收负值。 完全有道理因为没有人可以拥有“ -32”岁。 我们还假设使用javascript是没有问题的。在这样的简单验证中javascript就可以了。但是请耐心等待这个。:) 然后我们剩下两种主要方法来验证“年龄”字段 在我们的Managed Bean类的“ save”方法内部。 不建议使用 使用JSF验证程序 。 推荐的 我坚持使用“不建议”和“推荐”这两个词来强调在过程验证阶段之外验证用户输入不是犯罪。 我们经常面临无法实现“幸福之路”的情况。 犯罪是在做事的时候根本不知道发生了什么 接下来是解释。 不像这样 我归类为“不推荐”的方法是在“ save”方法所包含的逻辑中验证托管Bean中的“ age”字段。 当用户点击在“提交”JSF生命周期踢并调用“保存”的调用应用程序相法右注意这是在处理验证阶段之后 为了了解为什么这可能是不好的我们需要了解在每个JSF生命周期阶段中发生的事情并且还要记住Invoke Application阶段发生在 Process Validation和Update Model Values之后 。 概括地说这意味着仅在Person对象已经通过JSF生命周期更新了其“ age”属性之后才调用“ save”方法 查看上图您可能已经注意到当调用我们的“ save”方法时JSF生命周期已经在域类Person对象的“ age”属性中设置了不一致的值。 那是个问题吗 是的可能是。 由于我们的域类大多数时候都是由JPA管理的因此像这样的无效值可能最终会在没有我们意识到的情况下进入数据库。 根据我的个人经验我得出的结论是在使用“扩展的持久性上下文”即跨越多个请求/响应周期的JPA上下文时此类错误更为常见。 如今这通常是通过使用“对话上下文”来完成的例如CDI中或在已故的JBoss Seam中。 现在我们在说 理想情况下我们应该使用JSF Validator验证输入。 注意这并不一定意味着仅为验证逻辑创建一个单独的类而是意味着我们必须在正确的阶段 流程验证触发验证 我们可以创建一个带有FacesValidator注释的验证器类。 或在我们的Managed Bean类中创建一个验证方法 。 就像我说的那样无论如何进行验证主要要注意的是在正确的阶段进行验证。 还有几种验证输入的方法例如Bean Validation 。 就这样 希望你们喜欢。 评论和问题可以留在下面。 直到下一次 翻译自: https://www.javacodegeeks.com/2015/03/jsf-validation-at-the-right-phase-understanding-the-life-cycle.htmljsf表单验证