在CF9中使用隐式setter和getter时,我们处理什么验证?

时间:2011-06-24 18:24:43

标签: oop validation frameworks coldfusion cfc

使用隐式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,但这应该在控制器还是模型中?
  3. 我是OOP的新手,我依靠CFWheels为我做了所有这些。我想了解如何在没有框架的情况下处理此功能,或者如果我使用Hibernate,例如。

2 个答案:

答案 0 :(得分:3)

当我在大学做Java时,通常在setter中进行验证。但是,在web dev工作了一段时间之后,我注意到它通常不是一个好主意,因为你通常想要构造一批错误消息并返回给用户。因此,对象中的validate()方法或返回错误集合的Service层的validateX()方法更适合。

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

答案 1 :(得分:2)

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

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