gpt4 book ai didi

coldfusion - 如何有条件地将参数传递给 CFC 的实例?

转载 作者:行者123 更新时间:2023-12-04 18:00:58 27 4
gpt4 key购买 nike

我目前正在使用 <cfinvoke>标记调用 CFC 并传递参数。这真的很方便,因为我可以使用标签只传递我想要的参数,例如:

<cfinvoke component="pathtofolder.imagehandler" method="SomeMethod" argumentcollection="#VARIABLES#" returnvariable="ImageHandlerResult">
<cfif structkeyexists(ARGUMENTS, 'Argument1')>
<cfinvokeargument name="Parameter1" value="#ARGUMENTS.Argument1#" />
</cfif>
<cfif structkeyexists(ARGUMENTS, 'Argument2')>
<cfinvokeargument name="Parameter2" value="#ARGUMENTS.Argument2#" />
</cfif>
<cfif structkeyexists(ARGUMENTS, 'Argument3')>
<cfinvokeargument name="Parameter3" value="#ARGUMENTS.Argument3#" />
</cfif>
</cfinvoke>
<cfreturn ImageHandlerResult /> <!--- how do you get this using createObject/new method? --->

如果我使用 new()createObject()方法来创建 CFC 的实例,然后在这个新创建的实例中调用方法我无法有条件地传递参数。我在运行时出错。
<cfset ImageHandler = new pathtofolder.imagehandler()/>
<cfset ImageHandler.SomeMethod(
<cfif StructKeyExists(ARGUMENTS, 'Argument1')>
Parameter1 = ARGUMENTS.Argument1
</cfif>
<cfif StructKeyExists(ARGUMENTS, 'Argument2')>
Parameter2 = ARGUMENTS.Argument2
</cfif>
<cfif StructKeyExists(ARGUMENTS, 'Argument3')>
Parameter3 = ARGUMENTS.Argument3
</cfif>
)/>

如何使用上述方法有条件地传递参数?我应该使用 cfinvoke新实例上的方法 - 在这种情况下,创建实例然后使用 cfinvoke 的意义何在?再次当我可以坚持使用 cfinvoke直接在实际的 CFC 上?

最佳答案

您可以使用 argumentCollection .参数集合是一种结构,每个键都将被解构为单独的参数。

<cfset ImageHandler = new pathtofolder.imagehandler()>
<cfset args = {}>
<cfif StructKeyExists(ARGUMENTS, 'Argument1')>
<cfset args.Parameter1 = ARGUMENTS.Argument1>
</cfif>
<cfif StructKeyExists(ARGUMENTS, 'Argument2')>
<cfset args.Parameter2 = ARGUMENTS.Argument2>
</cfif>
<cfif StructKeyExists(ARGUMENTS, 'Argument3')>
<cfset args.Parameter3 = ARGUMENTS.Argument3>
</cfif>

<cfset ImageHandler.SomeMethod(argumentCollection=args)>

关于coldfusion - 如何有条件地将参数传递给 CFC 的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53069310/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com