【问题标题】:ColdFusion Using Custom Tags Within Custom TagsColdFusion 在自定义标签中使用自定义标签
【发布时间】:2012-07-13 13:40:42
【问题描述】:

我对 ColdFusion 有点陌生(来自 Java/OOP 世界)

我有一个自定义标签,它在 cfscript 中运行一些东西并输出一个值。我想让这个自定义标签(我们称之为 A)调用另一个自定义标签(我们称之为 B,一个更通用的自定义标签,具有某种“静态”功能)。

如何从 A 中调用 B? 如何在 A 中使用 B 的返回值?

A的代码

<cfscript>
     //Call to other custom tag here?:
     //foo = [CUSTOMTAG param="stuff"];
     value = foo;
</cfscript>
<cfoutput>#value#</cfoutput>

【问题讨论】:

    标签: coldfusion custom-tags


    【解决方案1】:

    您是否在维护一些旧代码?否则,编写用户定义函数比使用老式自定义标签更容易使用和/或测试。

    虽然自定义标签擅长生成标记之类的事情,但它不擅长返回变量。

    您应该考虑编写用户定义函数 (UDF),就像您在 Java 中所做的那样。

    不是说自定义标签不能返回值,只是不如函数自然。

    要从自定义标签返回值,您需要使用Caller 范围(映射到调用者的variables 范围)。有点像...

    <!--- customTag.cfm --->
    <cfset caller[attributes.returnVar] = "some value">
    

    然后像这样调用 customTag:

    <cf_customTag returnVar="foo">
    
    <cfdump var="#variables.foo#">
    

    只需跟踪谁是调用者,并在调用者范围内设置值,您就可以在自定义标签内、自定义标签内、自定义标签内调用自定义标签...

    如果您需要将自定义标记的输出捕获到 var 中,请将自定义标记调用包装在 &lt;cfsavecontent&gt; &lt;/cfsavecontent&gt; 中。

    【讨论】:

    • 很好的评论亨利。我想知道 JMoy 是否试图弄清楚如何从 within cfscript 调用他的其他自定义标签?不知道我有没有答案。我想实际上我会使用 cffunction 创建一个函数,该函数调用他的第二个自定义标签 - 然后在 cfscript 中调用该函数......有点像包装器。
    【解决方案2】:

    这就是我最终要做的。在我的“A”文件中(回想一下,A 调用 B):

    <cfscript>
    b = createObject("component","bName");
    returnVal = b.method("paramInfo");
    </cfscript>
    

    在我的“B”文件中

    <cfcomponent displayname="bName">
    <cffunction name="method" returntype="string" output="false">
    <cfargument name="paramName" required="yes" type="string">
    <cfscript>
     returnVal = paramName;
    </cfscript>
    <cfreturn returnVal>
    </cffunction>
    </cfcomponent>
    

    【讨论】:

      猜你喜欢
      • 2016-05-30
      • 2014-09-14
      • 1970-01-01
      • 1970-01-01
      • 2014-12-26
      • 2017-02-10
      • 1970-01-01
      • 2013-01-11
      • 2015-01-20
      相关资源
      最近更新 更多