繁体   English   中英

在CF9中使用隐式setter和getter时,我们该如何处理验证?

[英]What do we handle validation when using implicit setters and getters in CF9?

使用隐式setter和getter时如何处理验证? 我想象当使用显式getter和setter时,我们会做类似的事情:

public void function setFirstName() {
   if (! len(arguments.firstName)) {
      //throw some error/add an error to an error container
   } else {
      variables.firstName = arguments.firstName;
   }
}

如果使用隐式的getter和setter,则可以在CFC本身中定义验证规则,例如:

/**
* @validate string
* @validateparams {minLength=2, maxLength=40}
*/
property String firstName;

我的问题是:

  1. 验证逻辑是在CFC本身还是在调用方中?
  2. 我们如何捕获错误并将错误返回给用户以获取反馈? 我可以考虑使用try / catch,但这应该在控制器或模型中吗?

我是OOP的新手,我依靠CFWheels为我完成所有这些工作。 我想学习在没有框架的情况下如何处理此功能,或者例如,如果我使用的是Hibernate。

当我上大学时使用Java时,验证通常是在setter中完成的。 但是,在Web开发人员工作了一段时间后,我注意到这通常不是一个好主意,因为您通常希望构造一批错误消息并返回给用户。 因此, validate()方法在所述对象或validateX()在服务层的方法,它返回错误的集合会更适合。

话虽如此,如果您正在运行CF9,除了ValidateThis之外,还有http://hyrule.riaforge.org/

就个人而言,我认为不应在正在验证的对象内部进行验证。 我更喜欢外部流程,例如ValidateThis http://www.validatethis.org/

这是用于验证对象的非常强大且灵活的“框架”(因为缺少一个更好的词)。 它允许您验证简单值,复杂值(结构,数组)和其他对象的属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM