我的整个答案仅用于教育目的,我强烈建议您使用现有框架而不是重新发明轮子。看看Picking a ColdFusion MVC Framework
您可以将值存储在session
范围中。许多框架使用闪存概念来实现,这是一个临时内存(实现为结构),在访问时会破坏成员。
看看http://cfwheels.org/docs/1-1/chapter/using-the-flash实现这样的 API 非常简单。
客户端代码可能如下所示(取决于您的实现):
<cfset session.flash.set('importantMsg', 'some important msg')>
<cflocation ...>
然后从另一个页面:
<cfif session.flash.has('importantMsg')>
<!--- The following line should also destroy the 'importantMsg' key --->
#session.flash.get('importantMsg')#
</cfif>
这是一个实现示例(并不是说该实现不是线程安全的):
FlashMemory.cfc
<cfcomponent>
<cffunction name="init" returntype="FlashMemory">
<cfset variables.instance = {flash = {}}>
</cffunction>
<cffunction name="set" returntype="void">
<cfargument name="key" type="string" required="true">
<cfargument name="value" type="any" required="true">
<cfset variables.instance.flash[arguments.key] = arguments.value>
</cffunction>
<cffunction name="get" returntype="any">
<cfargument name="key" type="string" required="true">
<cfset var v = variables.instance.flash[arguments.key]>
<cfset structDelete(variables.instance.flash, arguments.key)>
<cfreturn v>
</cffunction>
<cffunction name="has" returntype="boolean">
<cfargument name="key" type="string" required="true">
<cfreturn structKeyExists(variables.instance.flash, arguments.key)>
</cffunction>
</cfcomponent>
onSessionStart
<cfset session.flash = new FlashMemory()>
另请注意,在您的情况下,您的远程 CFC 方法不应返回任何内容。您将使用闪存来传递数据。这意味着当方法完成它的工作时,您可以简单地重定向客户端。
在这种特殊情况下,您可能不应该使用远程 CFC 方法:
我从未真正将远程 CFC 方法用作有状态的 Web 服务。远程 CFC 方法的各种优势,例如它们以多种数据交换格式(JSON、WDDX...)吐出数据的能力,随着您的实施而丢失。
您可以简单地执行以下操作:
注册.cfm
<cfset errors = session.flash.get('registrationErrors')>
<cfif arrayLen(errors)>
<!--- Display errors --->
</cfif>
<form method="post" action="register.cfm">
...
</form>
注册.cfm
<cfset registration = new Registration(argumentcollection = form)>
<cfset validator = new RegistrationValidator(registration)>
<cfif validator.validate()>
<cfset application.userService.register(registration)>
<!--- You can also redirect to a page that represents the correct state --->
<cflocation url="registered.cfm" addtoken="no">
<cfelse>
<!--- Store the errors collection in the flash memory --->
<cfset session.flash.set('registrationErrors', validator.errors())>
<!--- Redirect to the page the user came from --->
<cflocation url="#cgi.http_referer#" addtoken="no">
</cfif>