cfproperty标签定义的变量和ColdFusion中的变量范围变量有什么区别?
我有Java语言经验,你能比较ColdFusion cfproperty变量,变量范围变量到Java实例变量和类变量吗?
谢谢!
我正在从MS Access后端迁移到mySQL.这曾经工作但现在没有,我无法解决问题.
<cfargument required="false" name="expiry" type="any" default="" />
<cfquery datasource='#arguments.dsn#'>
INSERT INTO users(expiry)
VALUES (<cfqueryparam value="#arguments.expiry#" cfsqltype="CF_SQL_TIMESTAMP"/>)
</cfquery>
Run Code Online (Sandbox Code Playgroud)
数据库字段设置为datetime,默认为NULL
该参数从表单字段填充,该表单字段为空或javascript验证日期.它在空的形式上窒息.
我想在Application.cfc onRequestEnd函数中添加一些代码,如果某个应用程序变量标志打开,则会将查询sql和执行时间记录到数据库表中.这部分相对容易,因为ColdFusion将sql和执行时间作为查询结构的一部分返回.
但是,这个网站可能接近1000页,修改所有这些页面是不现实的.所以我想在onRequestEnd函数中以编程方式完成这项工作.为了做到这一点,我需要以某种方式获取在页面上执行的所有查询的列表,这就是我难倒的地方.
如何获取当前页面上已执行的所有查询的名称列表?这些查询出现在模板的变量范围中,但是其中还有无数的其他变量,我不确定如何轻松地循环并确定哪个是查询.
任何帮助,将不胜感激.
你怎么能管理这样的事情?我尽力将子系统设计为可重用的,但是只有某些必须自定义的站点特有的东西(例如,Account实体中的字段,或orm注释中的cfc ="").
我想到了使用SVN并扩展了自定义,但是我们发现它非常麻烦,因为提交者每次都必须决定属于卡车或分支的增强/错误修复,一旦错过了某些内容,就不容易撤消.
那么...处理这种情况的最佳方法是什么?只需将代码集克隆到新的源代码控制中,并修复两个/所有源代码控件上的错误?
我正在使用ColdFusion 9和jQuery.
我是通过CFAJAXPROXY使用ColdFusion CFC的新手.我很好奇我的数据库是否存在风险以及我如何轻松修补安全漏洞.
我把它放在页面顶部:
<cfajaxproxy cfc="brands" jsclassname="jsApp">
Run Code Online (Sandbox Code Playgroud)
这是一些登录后使用的CFC:
<!--- ADD BRAND --->
<cffunction name="addBrand" access="remote">
<cfargument name="SiteID" required="true">
<cfargument name="Brand" required="true">
<cfscript>
LOCAL.SiteID = ARGUMENTS.SiteID;
LOCAL.Brand = trim(left(ARGUMENTS.Brand, 50));
</cfscript>
<cfquery name="GetBrands">
INSERT INTO Brands(SiteID, Brand)
VALUES (<cfqueryparam cfsqltype="cf_sql_integer" value="#LOCAL.SiteID#">,
<cfqueryparam cfsqltype="cf_sql_varchar" value="#LOCAL.Brand#">)
</cfquery>
<cfreturn true>
</cffunction>
Run Code Online (Sandbox Code Playgroud)
这是将数据发布到CFC的jQuery
$("#AddBrand").click(function() {
NewBrand = $("#NewBrand").attr("value");
var jro = new jsApp();
jro.addBrand(NewBrand);
});
Run Code Online (Sandbox Code Playgroud)
那么,这里有一个很大的安全漏洞吗?access ="remote"是否只能用于检索数据?
在cfmodule的cfm中,通过使用Caller范围返回值.如果我在CFC中的函数内调用cfmodule,调用者映射到CFC的变量范围是否正确?我可以将值返回到CFC函数的本地范围吗?
谢谢
我是jquery的新手,我正在尝试使用对话框调用和更新我的数据库.我修改了现有模板以生成下面的代码,并且无法获得jquery函数调用的函数savefee.我的javascript控制台中没有错误.任何帮助表示赞赏.
`
<cfset getfees = new artservice().getfees()>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js"></script>
<script>
$(document).ready(function() {
$(".artdiv").click(function() {
var initialDiv = this;
//based on which we click, get the current values
var feeid = $(this).data("fee_id");
var feetitle = $("h2", this).text();
// set form values
$("#fee_id").val(feeid);
$("#fee_title").val(feetitle);
$("#editForm").dialog({
buttons: {
"Save": function() {
var thisDialog = $(this);
$.post("artservice.cfc", {
method: 'savefee',
fee_id: $("#fee_id").val(),
fee_title: $("#fee_title").val()
},
function() {
//update the initial div
$("h2", initialDiv).text($("#fee_title").val());
$(thisDialog).dialog("close");
});
}
}
});
});
}); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用ColdFusion后端接收AngularJS,并遇到了一些障碍.我正在使用CF Art Gallery数据库修改他们的"To Do"应用程序http://angularjs.org/.我正在尝试使用AJAX将ColdFusion CFC链接到Angular应用程序.
以下是我的artists.cfc:
<cfcomponent>
<cffunction name="getArtists" access="remote" >
<cfargument name="firstName" default="">
<cfargument name="lastName" default="">
<cfquery name="getArtists_sql" datasource="cfartgallery">
SELECT
firstname as text,
lastname as done
FROM artists
WHERE 0=0
<cfif firstName neq "">
AND ucase(firstname) like ucase('%#FIRSTNAME#%')
</cfif>
<cfif lastName neq "">
OR ucase(lastname) like ucase('%#LASTNAME#%')
</cfif>
</cfquery>
<cfreturn getArtists_sql>
</cffunction>
</cfcomponent>
Run Code Online (Sandbox Code Playgroud)
我使用AngularJS使用以下代码调用CFC:
function TodoCtrl($scope, $http) {
$http.get('cfc/artists.cfc?method=getArtists&returnformat=json').
success(function (response) {
$scope.todos = data.DATA;
}).
error(function (data) {
$scope.todos = data;
});
}
Run Code Online (Sandbox Code Playgroud)
我知道我得到了回复.以下是Chrome的开发者工具为我返回的JSON字符串:
{
"COLUMNS": …Run Code Online (Sandbox Code Playgroud) 我在理解该createObject()函数时遇到了一些问题,文档说它像CreateObject("component", component-name).
文档中提到Coldfusion在“ColdFusion Administrator的Custom Tag Paths页面上指定的目录”中搜索组件
但它在我的情况下不起作用。我有一个在 CF admin 中映射的文件夹用于自定义标签,在该文件夹内我放置了一个名为“mycfcs”的文件夹,其中我的 cfc 被命名为Item.cfc
在测试页面中,我以这种方式创建对象:
<cfset testObj = createobject("component","mycfcs.Item")>
但它抛出错误“找不到 ColdFusion 组件或接口”。
我目前正在使用<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? --->
Run Code Online (Sandbox Code Playgroud)
如果我使用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>
)/> …Run Code Online (Sandbox Code Playgroud)