标签: cfml

如何连接两个字符串并将结果用作coldfusion中的变量名?

我有一个表格,其格式有很多字段

  • 名称= "字段-1"
  • 名称= "字段-2"
  • 名称= "字段-3"
  • 名称= "字段-4"
  • 等等....

在表单操作页面上,我希望能够使用循环并能够使用循环的索引来连接像这样的字符串前缀<cfset newField = "field-" & #index#>,然后使用它#Variables.newField#来访问上一页上的表单字段.

我一直在玩这个Evaluate()功能,但没有运气.我不太多使用ColdFusion,所以我可能只是稍微偏离语法.

我如何使用它的一个例子是:

<cfset newField = "form.field-" & #index#>
<input type="hidden" 
      name="field-<cfoutput>#index#</cfoutput>" 
      value="<cfoutput>Evaluate(Variables.newField)</cfoutput>">
Run Code Online (Sandbox Code Playgroud)

concatenation evaluate cfml

7
推荐指数
1
解决办法
6839
查看次数

IIS 8.5和ColdFusion 10上的服务暂时不可用错误

在中午IIS服务器运行正常,当我重新启动它时显示我的错误

服务临时不可用!

由于维护停机或容量问题,服务器暂时无法为您的请求提供服务.请稍后再试.

雅加达/ ISAPI/isapi_redirector/1.2.32()

有人知道如何解决这个问题吗?

它只是运行正常,没有改变连接器和IIS的任何东西.

谢谢你得到的答案.我需要重新启动Coldfusion,IIS和托管PC本身来修复它.它不会再出错了谢谢!

iis coldfusion cfml

7
推荐指数
1
解决办法
6079
查看次数

用于CFC的toString的CFML补充

在PHP中我可能遇到这种情况:

<?php
class Person {

    public $firstName;
    public $lastName;

    function __construct($firstName, $lastName)
    {
        $this->firstName = $firstName;
        $this->lastName = $lastName;
    }

    function __toString()
    {
        return "{$this->firstName} {$this->lastName}";
    }
}

echo new Person("Adam", "Cameron"); // Adam Cameron
Run Code Online (Sandbox Code Playgroud)

(可运行的演示)

我可以发誓在CFML中有一个等价物,例如:

// Person.cfc
component {

    function init(id, firstName, lastName){
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
    }

    function toString(){
        return "#this.firstName# #this.lastName#";
    }
}

// test.cfm
writeOutput(new Person("Adam", "Cameron"));
Run Code Online (Sandbox Code Playgroud)

我认为这对CF11或CF2016来说是新的.

但这不行.我知道我可以做客户序列化服务器,但这不适合这里.

我也知道我可以通过其他各种方式实现相同的目标,但这不是问题.我特别要求能够实现一个toString方法或类似的方法,以便能够指定如何将对象表示为字符串.

我错误记得CFML,还是我做错了什么?

coldfusion cfml

7
推荐指数
1
解决办法
139
查看次数

CFML设计模式资源?

与所有开发一样,通过ColdFusion,RailoOpenBD的 CFML 我们遇到了常见的编程问题.对于这些问题,程序员必须转向模式(或反模式).然而,像GOF和现代头版第一本书这样的经典资源都倾向于关注Java.

虽然java本身很漂亮,但是所有三个cfml引擎本质上都是java应用程序,它们表示在编写cfml时,并不是所有甚至许多设计模式都可以或者应该以java方式使用.

我想知道在使用cfml时你发现哪些资源/模式有用?或者您更改了适应java或smalltalk模式以在cfml中使用的内容?

就个人而言,我发现这两个演示文稿都很有趣:

CFMeetup:设计模式和ColdFusion作者:Sean Corfield

设计模式由Cameron Childress 设计

更新:

偶然发现cfdesignpatterns.com,看起来很有希望.

coldfusion design-patterns openbd railo cfml

6
推荐指数
1
解决办法
736
查看次数

可以在Application变量中存储大对象(例如java组件)吗?

我正在开发一个应用程序,它创建并存储与应用程序范围中的本地XMPP服务器的连接.连接方法存储在cfc中,以确保Application.XMPPConnection在每次使用时都已连接并授权,并利用连接向用户发送实时事件.据我所知,这工作正常.但它没有在任何压力下进行测试.

我的问题是:这个设置会在以后引起问题吗?我只是问,因为我找不到其他人以这种方式使用Application变量的证据.如果我不使用railo,我将使用CF的事件网关来完成相同的任务.

coldfusion railo cfwheels cfml

6
推荐指数
1
解决办法
484
查看次数

CF中的点和方括号表示法不应该表现相同吗?

使用此代码:

<cfset foo = {}>
<cfset exists1 = !isDefined("foo.foo")>
<cfset exists2 = isNull(foo.foo)>
<cfset exists3 = isNull(foo['foo'])>
Run Code Online (Sandbox Code Playgroud)

Railo传递ok(全部为True),而CF在最后一行抛出异常.

coldfusion.runtime.UndefinedElementException:元素foo在作为表达式一部分引用的CFML结构中未定义.

我一直认为CFML中的点符号和方括号表示法应该在功能上等同,只有方括号可以定义区分大小写的键.

我在这里报告的一个错误最近被标记为"NotABug".

有人可以解释原因吗?

coldfusion railo coldfusion-10 cfml

6
推荐指数
1
解决办法
158
查看次数

ColdFusion 2016:你的网络根目录中有一个名为'api'或'rest'的文件夹吗?

我刚刚安装了ColdFusion 2016(从CF10升级),我注意到每当我尝试访问我的webroot中名为'api'的文件夹时,我都会收到内部500错误.

例如:www.mysite.com/api/

我假设这与新的ColdFusion API REST服务有关,所以我创建了另一个名为'rest'的目录,执行了相同的测试(www.mysite.com/rest/),并收到了另外500个错误.

查看IIS错误截图: 在此输入图像描述

奇怪的是,我没有使用ColdFusion REST服务,我没有在ColdFusion Administrator中启用它.

我的问题:

您是否允许在您的Web根目录中拥有名为"api"或"rest"的文件夹名称?或者这些是现在保留的文件夹名称?是否有解决方法来禁用特定站点的此功能,以便我可以使用这些文件夹名称?

iis coldfusion cfml coldfusion-2016

6
推荐指数
1
解决办法
617
查看次数

CFML将evaluate()查询字符串转换为结构语法

下面我有一个循环内的代码,以便将循环迭代我的动态变量设置temp到的值getAdvisor_Advisors.advisor_ID用于当前循环迭代.

<cfset temp = "getAdvisor_Advisors#LoopCount#.advisor_ID">
Run Code Online (Sandbox Code Playgroud)

下面的cfinvoke调用我在动态"temp"变量中传递的查询,但必须使用它周围的慢评估(temp)来获取正确的值.

<cfinvoke component="com.appointments" method="get_All_Appointments" returnvariable="getAppointments">
      <cfinvokeargument name="Advisor_ID" value="#evaluate(temp)#">
      <cfinvokeargument name="StartDay" value="#dateFormat(form.cal,'dd')#">
      <cfinvokeargument name="StartMonth" value="#dateFormat(form.cal,'mm')#">
      <cfinvokeargument name="StartYear" value="#dateformat(form.cal,'yyyy')#">             
</cfinvoke>
Run Code Online (Sandbox Code Playgroud)

我想重写temp变量evaluate()而不使用evaluate.我被告知我可以使用结构语法来引用它,如下所示:

没有评估:

<cfset foo = qBar["text#lang#"][CurrentRow]>
getAdvisor_Advisor["advisor_ID"][CurrentRow]
Run Code Online (Sandbox Code Playgroud)

我该怎么改写

<cfset temp = "getAdvisor_Advisors#LoopCount#.advisor_ID">
Run Code Online (Sandbox Code Playgroud)

使用结构语法?

添加更多代码,以便您可以看到为什么这很复杂,这些是复合循环.

            <cfquery name="getAdvisor_Advisors1" dbtype="query" cachedWithin="#CreateTimeSpan(0,0,15,0)#">
                Select *
                From getAdvisors
                Where Express = 'FR/SO' 
                Order by Specialization, Advisor
            </cfquery>

            <cfquery name="getAdvisor_Advisors2" dbtype="query" cachedWithin="#CreateTimeSpan(0,0,15,0)#">
                Select *
                From getAdvisors
                Where Express = 'JR/SR' 
                Order by Specialization, Advisor
            </cfquery>

            <cfquery …
Run Code Online (Sandbox Code Playgroud)

coldfusion structure cfml

6
推荐指数
1
解决办法
320
查看次数

“如何解决`删除SerializeJSON()的默认字母顺序`

我正在尝试将请求中的序列化数据添加到需要维护数据特定顺序的第三方API,但是SerializeJSON以字母顺序排列,这破坏了第三方API要求的格式。有人可以帮我弄清楚吗

输入:

<cfset data ={
                "Booking": {
                    "ActionCode":"DI",
                    "AgencyNumber":"23",
                    "Touroperator":"TVR",
                    "BookingNumber":"323",
                },
                "Payment": {
                    "__type":"paymenttype",
                    "PaymentProfile": {
                        "Value": 4,
                        "Manual": false
                    },
                    "PaymentType": 4,
                    "PaymentAction":2,
                    "Details": {
                        "IBAN": "DE02120300000000202051",
                        "BIC": "BYLADEM1001"
                    }
                },
                "Login":{
                    "UserCode": "usercode",
                    "Password": "password"
                }
            }>
Run Code Online (Sandbox Code Playgroud)

SerializeJSON()在我的数据上使用此方法时:

SerializeJSON(data)
Run Code Online (Sandbox Code Playgroud)

电流输出

"{"Booking":{"Touroperator":"TVR","ActionCode":"DI","BookingNumber":"323","AgencyNumber":"23"},"Login":{"UserCode":"usercode","Password":"password"},"Payment":{"PaymentProfile":{"Manual":false,"Value":4},"PaymentType":4,"PaymentAction":2,"__type":"paymenttype","Details":{"BIC":"BYLADEM1001","IBAN":"DE02120300000000202051"}}}"
Run Code Online (Sandbox Code Playgroud)

预期产量:

"{"Booking":{"ActionCode":"DI","AgencyNumber":"23","Touroperator":"TVR","BookingNumber":"323",},"Payment":{"__type":"paymenttype","PaymentProfile":{"Value":4,"Manual":false},"PaymentType":4,"PaymentAction":2,"Details":{"IBAN":"DE02120300000000202051","BIC":"BYLADEM1001"}},"Login":{"UserCode":"usercode","Password":"password"}}"
Run Code Online (Sandbox Code Playgroud)

coldfusion cfml

6
推荐指数
1
解决办法
84
查看次数

是否可以使用 onCFCRequest 或类似函数将数据从 cfc 写入调用者请求范围?

我想启动一些请求日志记录,更重要的是,我的应用程序中的查询。Lucee 使这变得非常简单,我可以在 onRequestEnd 函数中使用几行代码记录任何给定页面中运行的所有查询:

<cfset getQueries   = getPageContext().variablesScope()>
<cfset queryArr     = ArrayNew(2)>
<cfset x            = 0>
<cfloop collection="#getQueries#" item="key">
    <cfif IsQuery(getQueries[key])>
        <cftry>
            <cfset thisQ            = getQueries[key]>
            <cfset thisQT           = thisQ.getExecutionTime() / 1000000>
            <cfset thisSQL          = thisQ.getSQL().getSQLString()>

            <cfset x                = x + 1>
            <cfset queryArr[x][1]   = thisQT>
            <cfset queryArr[x][2]   = thisSQL>
            <cfcatch>
            
            </cfcatch>
        </cftry>
    </cfif>
</cfloop>
Run Code Online (Sandbox Code Playgroud)

这给了我一个数组,其中包含每个查询的 SQL(绑定变量用 ? 表示)和执行时间。我可以将它插入到日志数据库中,并从中获得各种乐趣。

问题是我有很多页面调用 CFC,它们运行查询然后返回数据:

<cfset someVar  = createObject("component","cfc.test").getSomeData(ID=7)>
Run Code Online (Sandbox Code Playgroud)

在我编写日志代码后,我意识到 CFC 中的查询(我的大部分数据处理)没有被记录下来,因为它们当然是在自己的范围内运行的。我也在寻找一种简单的方法来记录 CFC 中的查询。

几分钟前我从未听说过 onCFCRequest(当谷歌启发我时),我找不到关于它使用的太多信息。我希望它可以像 onRequest 一样工作,我可以做这样的事情:

<cffunction name="onCFCRequest">
    <cfargument type="String" name="cfcName"    required=true/> …
Run Code Online (Sandbox Code Playgroud)

coldfusion application.cfc cfml lucee

6
推荐指数
1
解决办法
62
查看次数