我想编写一个服务器端验证代码来验证我页面上的所有用户输入。我想从表示层保留所有这些服务器端验证。现在我正在研究创建一个组件并将所有验证功能保留在其中。我将使用<cfinvoke>
标签来访问我的用户页面上的验证方法。但问题是我必须对大约 50 个用户输入应用验证,并且需要使用<cfinvoke>
标签 50 次。谁能告诉我<cfinvoke>
多次使用会影响性能,还是有其他更好的方法可以使用?
问问题
280 次
1 回答
3
使用<cfinvoke>
. 但我仍然建议你在这里避免它。而是考虑这个(示例):
验证器.cfc
<cfcomponent>
<cffunction name="validateX" access="public" ...>
...
</cffunction>
<cffunction name="validateY" access="public" ...>
...
</cffunction>
<cffunction name="validateZ" access="public" ...>
...
</cffunction>
</cfcomponent>
控制器.cfm
<cfset validator = new Validator()>
<cfset validator.validateX(...)>
<cfset validator.validateY(...)>
<cfset validator.validateZ(...)>
...
现在您可以轻松地处理验证结果。
如果您返回布尔值:
<cfif validator.validateX(...)>
...
<cfelse>
...
</cfif>
如果返回有错误的数组:
<cfset errors = []>
<cfset errors.addAll( validator.validateX(...) )>
<cfset errors.addAll( validator.validateY(...) )>
<cfset errors.addAll( validator.validateZ(...) )>
等等
<cfinvoke>
创建 Class ( new Validator()
) 的实例并以相同的方式调用该方法validateX(...)
。主要区别在于:实例是在每次新创建的,<cfinvoke>
并且返回必须指定为输入变量(returnVariable
),这在大多数情况下很麻烦。
于 2017-10-29T13:03:17.193 回答