如何在ColdFusion中处理请求

时间:2017-09-14 11:54:54

标签: coldfusion coldfusion-10

我是ColdFusion的新手,我创建了一个result.cfm页面,现在我只想在用户调用Application.cfc时在/result.cfm中执行一些操作。如下所示:

<cfif 'if the request is for result.cfm'>
<!-- do some action -->
</cfif>

有没有办法处理请求?

2 个答案:

答案 0 :(得分:0)

<cfif REFindNoCase("^/result.cfm", CGI.SCRIPT_NAME)>
  <!--- do some action --->
</cfif>

或者如果您想匹配更多pagessubfolders,您可以这样做:

<cfset patterns = [
    "^/foo/",
    "^/bar/",
    "^/etc/",
    "^/login.cfm",
    "^/baz.cfm"
] />

<cfif REFindNoCase("(" & ArrayToList(patterns, ")|(") & ")", CGI.SCRIPT_NAME)>
    <!--- do some action --->
</cfif>

答案 1 :(得分:0)

CFC是Coldfusion称之为组件的东西,但它本质上是一个带有方法的对象。当您的站点上的任何页面被请求时,coldfusion会将您的页面名称发送到Application.cfc的onRequest方法。默认情况下,该方法看起来像这样......

<cffunction name="OnRequest" access="public" returntype="void" output="true">

    <cfargument name="TargetPage" type="string" required="true" />

    <cfinclude template = "#arguments.targetPage#" />

</cffunction>

TargetPage是已请求的页面的相对路径。

我不确定你要做什么,但你可以创建页面result.cfm并在那里进行编码,或者如果你需要,你可以通过以下方式截取呼叫创建自己的onRequest方法并将其放入application.cfc

<cffunction name="OnRequest" access="public" returntype="void" output="true">

    <cfargument name="TargetPage" type="string" required="true" />

    <cfif arguments.targetPage is "requestresult.cfm">
        <!--- Do something else --->
    <cfelse>
        <cfinclude template = "#arguments.targetPage#" />
    </cfif>

</cffunction>

请注意,onRequest不是Application.cfc中唯一的方法,因此值得查找。 另请注意,您可能希望在尝试此操作时输出arguments.targetPage,以便仔细检查斜杠是否附带请求(无法记住)