标签: lucee

server.railo是否存在于Lucee实例上?

我有这个代码:

<cfdump eval=server>
Run Code Online (Sandbox Code Playgroud)

它输出的顶级键coldfusion,java,lucee,os,separator,servlet.请注意,railo那里没有列出.

但是,如果我这样做:

<cfdump eval=server.railo>
Run Code Online (Sandbox Code Playgroud)

然后它输出运行Railo服务器时可能期望的通常结构(而不​​是Lucee服务器).

那是怎么回事?

railo lucee

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

Lucee - Coldfusion新关键字不起作用

我试图使用new关键字调用组件,但它无法正常工作.

以下方法可以正常工作:

<cfset test = CreateObject("component", "test-objects.shipping_new").init(bar="Blah", foo="boom")>
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用以下内容时:

<cfset test = New test-objects.shipping_new(bar="Blah", foo="boom") />
Run Code Online (Sandbox Code Playgroud)

我收到了错误tag cfset is not closed.上面的代码是我试图从中调用它的文件的第一行,除非我遗漏了标记看起来对我不熟的东西.我正在使用Lucee 4.5,如果这有所作为.

coldfusion railo lucee

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

是否可以使用 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
查看次数

CFQuery从多个插入到SQL Server获取GeneratedKey

我试图使用多插入语法获取我插入的行的生成密钥(或identitycol).

<cfquery>
        CREATE TABLE TempPerson
            (
            PersonID INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
            LastName varchar(20),
            FirstName varchar(20)
            );
</cfquery>

<cfquery result="qrResult">
    INSERT INTO TempPerson( lastName, firstName )
    VALUES( 'Smith', 'Michael' ), ('Jones','Ricky')
</cfquery>

<cfdump var="#qrResult#">
Run Code Online (Sandbox Code Playgroud)

我在CF10和Railo 4.2中结合SQL Server和MySQL运行了这个.

带有SQL Server的CF10 - 没有返回GeneratedKey.只有recordCount变量

RecordCount = 2
Run Code Online (Sandbox Code Playgroud)

CF10与MySQL - 获取标识列作为列表,但错误的recordCount

GeneratedKey = 1,2
RecordCount = 1
Run Code Online (Sandbox Code Playgroud)

带有SQL Server的Railo 4.2 - 只获取最后一个标识列

GeneratedKey = 2
RecordCount = 2
Run Code Online (Sandbox Code Playgroud)

带有MySQL的Railo 4.2 - 获取标识列作为列表,以及正确的recordCount

GeneratedKey = 1,2
RecordCount = 2
Run Code Online (Sandbox Code Playgroud)

所以看起来4个排列中没有一致性.但我最紧迫的问题是,是否有办法从SQL Server运行CF10生成密钥.在那儿?

t-sql coldfusion railo lucee

5
推荐指数
1
解决办法
376
查看次数

格式化lucee-spreadsheet时出错:超出了最大单元格样式数

我正在使用lucee-spreadsheet,这是一个很棒的工具.我正在制作一个非常大的电子表格(工作簿中有多张表,每张表有数千行).一切都按预期工作.我已经用数据填充了工作表,并在客户想要的组之间创建了空白行.我现在回去尝试应用一些格式,我遇到了错误:

超出了最大单元格样式数.您可以在.xls工作簿中定义最多4000个样式

问题是我只尝试应用一种风格:

spreadsheet.formatColumns(workbook=workbook, format={dataformat="$##,####0.00"},range='5-20');

我还需要应用其他一些风格.我猜测,因为有超过500行,并且这种样式被应用于16列,该样式实际上是格式化每个单元格而不是列.

有没有不同的方式,我可以或应该应用这种风格?

coldfusion excel apache-poi lucee

5
推荐指数
1
解决办法
567
查看次数

在lucee或railo上的cfml文件中包含cfc中的接口函数

我正在尝试向cfc添加一个接口,其中包含cfml文件中的一些函数,但是它会抛出错误消息"component [...]没有实现接口的函数[..]"它的功能抱怨是在包含的cfml文件中实现的,我已经在railo 4和lucee 5中测试了这个并且在两者中都得到了相同的错误但它在coldfusion 11中有效吗?是否有人知道在lucee中是否有解决方法或修复此问题或railo?

下面是重现错误的示例代码.

int.cfc

interface {
    public numeric function func() output="false";
}
Run Code Online (Sandbox Code Playgroud)

comp.cfc

component implements="int" {
    include "inc.cfm";
}
Run Code Online (Sandbox Code Playgroud)

inc.cfm

<cfscript>
public numeric function func() output="false"{
    return 2;
}
</cfscript>
Run Code Online (Sandbox Code Playgroud)

index.cfm

<cfscript>
    cfc = createObject("component", "comp");
    writedump(cfc.func());
</cfscript>
Run Code Online (Sandbox Code Playgroud)

coldfusion cfc railo cfml lucee

5
推荐指数
1
解决办法
164
查看次数

如何在ColdFusion/Lucee组件中动态编写隐式getter和setter?

我希望能够在CFML/LUCEE组件中动态编写一组getter和setter(没有硬编码的cfproperty标签).

<!--- MyComp.cfc --->
<cfcomponent displayname="MyComp" hint="MyComp" accessors="true">
    <cffunction name="init">
       <cfargument name="dynamicprops" type="array">
       <cfloop array="#dynamicprops#" index="item">
          <!--- 
           Now what? I cannot do a cfsavecontent and write props here.
           It demands cfproperty just after the cfcomponent begins. I 
           tried to do with closures but they are not acually setters 
           and getters. Does anyone know how to better do it? 
          ---> 
      </cfloop>
    </cffunction>
</cfcomponent>

<!--- example call --->
<cfset mc = CreateObject("component","MyComp").init( [{"name"="a","default"=1}] ) />
Run Code Online (Sandbox Code Playgroud)

然后我希望能够调用mc.setA(100)mc.getA().但是没有发生. …

coldfusion cfc metaprogramming getter-setter lucee

5
推荐指数
2
解决办法
553
查看次数

Lucee/CF - 清理逗号分隔列表

我有一个没有格式化的项目列表,我需要排序.

item 1,  item 3.0   ,item 8    ,    item 1.0 , item 4, item 5, item 6, item 10
Run Code Online (Sandbox Code Playgroud)

基本上,一些项目可以在逗号(,)之前或之后有空格(多个偶数).

我试图listtoarray然后排序但我发现排序保留了空格,使得第1项和第1.0项无法正确排序.我以为我可以使用listtoarray删除空格,但也许我正在考虑一个不同的功能,或者我需要通过循环遍历我的列表?

有人能刷新我的记忆吗?

更新预期结果应为:

项目1,项目10,项目3.0,项目4,项目5,项目6,......等.

coldfusion list lucee

5
推荐指数
1
解决办法
167
查看次数

ColdFusion 9.01-&gt; Lucee 5.3.3.62和&lt;cfinsert&gt; / &lt;cfupdate&gt;

我继承了一个在CF 9.01上运行的大型应用程序。
我正在将其移植到Lucee 5.3.3.62的过程中,但是存在一些问题,我知道我应该将其替换为,但是此应用程序有〜1000个源文件(!!),并且当前替换所有这些标签由于时机原因不明显。
Lucee抛出如下错误:

“对象或列名丢失或为空。对于SELECT INTO语句,请验证每个列都有一个名称。对于其他语句,请查找空别名。别名定义为“”或不允许。将别名更改为有效名称。”

起初,我认为日期字段存在问题,因为Lucee与CF 9.01的处理方式不同,但事实并非如此。因此,我创建了一个测试表(在MS-SQL Server 2008R2上):

CREATE TABLE [dbo].[LuceeTest01](   
  [Field1] [nvarchar](50) NULL,
  [Field2] [nvarchar](50) NULL ) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

在Lucee中,我用作数据源:Microsoft SQL Server(供应商Microsoft),称为“一个”

这是我的测试应用程序:

<cfset Form.Field1 = "Field1">
<cfset Form.Field2 = "Field2">
<cfoutput>
    <cfinsert datasource="one"
        tablename="LuceeTest01"
        formfields="Field1, Field2">
</cfoutput>
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到同样的错误。知道为什么吗?完整的跟踪在这里:https : //justpaste.it/6k0hw

谢谢!

编辑1:很
好奇。我尝试使用“用于MS SQL Server和Sybase的jTDS Type 4 JDBC驱动程序”作为数据源驱动程序,现在错误是:

对象限定符的数据库名称部分必须是当前数据库的名称。

这可以追溯到以下语句:

{call []..sp_columns 'LuceeTest01', '', '', 'null', 3}
Run Code Online (Sandbox Code Playgroud)

当我在Microsoft SQL Server Management Studio中尝试此操作时,出现相同的错误。但是,当我指定数据库名称(“ one”作为第三个参数)时,MS SQL SMS中没有错误。

EXEC sp_columns 'LuceeTest01', '', 'one', 'null', 3
Run Code Online (Sandbox Code Playgroud)

Lucee不应从数据源配置中获取此参数吗?

编辑2: …

sql-server coldfusion cfml lucee

5
推荐指数
1
解决办法
99
查看次数

将正文添加到 cfhttp 的正确方法

我想使用 lucee/coldfusion 发出 API 请求。

我像这样设置我的令牌请求:

cfhttp(
    url="[myurl]"
    method="POST"
    result="token"          
) {
    cfhttpparam(type="header" name="host" value="[url]");
    cfhttpparam(type="body" name="client_id" value="[id]");
    cfhttpparam(type="body" name="client_secret" value="[secret]");
    cfhttpparam(type="body" name="grant_type" value="[credentials]");
    cfhttpparam(type="body" name="scope" value="[url]");
};
Run Code Online (Sandbox Code Playgroud)

但错误消息告诉我需要包含“grant_type”,所以我的正文似乎没有正确发送。

有人可以帮我吗?

编辑:

我也尝试过这个:

var body = {
    "host": "[url]",
    "client_id": "[id]",
    "client_secret": "[secret]",
    "grant_type": "[credentials]",
    "scope": "[url]"
}

// Token
cfhttp(
    url="[url]" 
    method="POST"
    result="token"          
) {
    cfhttpparam(type="header" name="host" value="[url]");
    cfhttpparam(type="body" value="#body.toJson()#");
};
Run Code Online (Sandbox Code Playgroud)

coldfusion cfhttp cfml lucee

5
推荐指数
1
解决办法
978
查看次数