2

我想编写一个服务器端验证代码来验证我页面上的所有用户输入。我想从表示层保留所有这些服务器端验证。现在我正在研究创建一个组件并将所有验证功能保留在其中。我将使用<cfinvoke>标签来访问我的用户页面上的验证方法。但问题是我必须对大约 50 个用户输入应用验证,并且需要使用<cfinvoke>标签 50 次。谁能告诉我<cfinvoke>多次使用会影响性能,还是有其他更好的方法可以使用?

4

1 回答 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 回答