首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 ><cfinvoke>在ColdFusion中的应用

<cfinvoke>在ColdFusion中的应用
EN

Stack Overflow用户
提问于 2017-10-29 11:51:54
回答 1查看 311关注 0票数 2

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

EN

回答 1

Stack Overflow用户

发布于 2017-10-29 13:03:17

使用<cfinvoke>没有明显的开销。但我还是建议你在这里避免。相反,请考虑以下(示例):

Validator.cfc

代码语言:javascript
复制
<cfcomponent>

    <cffunction name="validateX" access="public" ...>
        ...
    </cffunction>
    <cffunction name="validateY" access="public" ...>
        ...
    </cffunction>
    <cffunction name="validateZ" access="public" ...>
        ...
    </cffunction>

</cfcomponent>

controller.cfm

代码语言:javascript
复制
<cfset validator = new Validator()>

<cfset validator.validateX(...)>
<cfset validator.validateY(...)>
<cfset validator.validateZ(...)>
...

现在,您可以轻松地处理验证结果。

如果返回布尔值:

代码语言:javascript
复制
<cfif validator.validateX(...)>
    ...
<cfelse>
    ...
</cfif>

如果返回一个包含错误的数组:

代码语言:javascript
复制
<cfset errors = []>
<cfset errors.addAll( validator.validateX(...) )>
<cfset errors.addAll( validator.validateY(...) )>
<cfset errors.addAll( validator.validateZ(...) )>

等。

<cfinvoke>创建类的一个实例(new Validator()),并以同样的方式调用方法validateX(...)。主要的区别是:实例是在每个<cfinvoke>上重新创建的,返回必须指定为输入变量(returnVariable),这在大多数情况下是很麻烦的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46999830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档