首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在一个application.cfm中可以有多个an应用程序吗?

在一个application.cfm中可以有多个an应用程序吗?
EN

Stack Overflow用户
提问于 2012-02-07 03:33:19
回答 3查看 1.4K关注 0票数 1

我有一个带有application.cfm的coldfusion站点。它有一个定义在其中的cfapplication:

代码语言:javascript
复制
<cfapplication name="FhaApp" clientmanagement="no"
           sessionmanagement="yes" sessiontimeout="#createTimeSpan(0,0,360,0)#">

<cflock timeout="120" name="#session.sessionID#" type="exclusive">
<cfcookie name="CFID" value="#session.CFID#" >
<cfcookie name="CFTOKEN" value="#session.cftoken#" >
</cflock>
<cfparam name="session.fromwhere" default="">
<cfif #cgi.SCRIPT_NAME# contains 'default-partner-'>
    <cfif not ISDEFINED("cookie.fromwhere")>
<cfcookie name="fromwhere" value="#right(cgi.SCRIPT_NAME,         (len(cgi.SCRIPT_NAME)-1))#" expires="30">
    <cfset session.fromwhere = #right(cgi.SCRIPT_NAME,(len(cgi.SCRIPT_NAME)-1))#>
    </cfif> 
 </cfif>

 <cfset datasourcename="fha47">

 <cfparam name="application.dsn" default="fha47">

 <cfparam name="session.loggedin" default="false">
 <cfparam name="session.ppcid" default="101">
 <cfparam name="session.cid" default="FHA">

我想添加另一个cfapplication,如下所示:

代码语言:javascript
复制
<cfapplication name = "QSvalues" 
sessionTimeout = "#CreateTimeSpan(0,0, 0, 60)#" 
sessionManagement = "yes">


<cflock scope = "Session" 
timeout = "30" type = "Exclusive">
<cfif NOT IsDefined("session.prop_st")>
    <cfset session.prop_st = "">
</cfif>
<cfif NOT IsDefined("session.prop_zip")>
    <cfset session.prop_zip = "">
</cfif>
<cfif NOT IsDefined("session.address")>
    <cfset session.address = "">
</cfif>
<cfif NOT IsDefined("session.email")>
    <cfset session.email = "">
</cfif>
<cfif NOT IsDefined("session.fname")>
    <cfset session.fname = "">
</cfif>
<cfif NOT IsDefined("session.lname")>
    <cfset session.lname = "">
</cfif>
<cfif NOT IsDefined("session.pri_phone_1")>
    <cfset session.pri_phone_1 = "">
</cfif>
<cfif NOT IsDefined("session.pri_phone_2")>
    <cfset session.pri_phone_2 = "">
</cfif>
<cfif NOT IsDefined("session.pri_phone_3")>
    <cfset session.pri_phone_3 = "">
</cfif>
</cflock>

<cflock scope = "Application" timeout = "30" type = "Exclusive">
<cfif NOT IsDefined("application.number")>
    <cfset application.number = 0>
</cfif>
</cflock>

我的问题是,你能在主application.cfm中定义两个单独的cfapplication吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-07 03:52:07

我不完全确定您为什么想要或需要第二个cfapplication;从您的代码或解释中并不是很清楚。我认为你可以放入另一个,但它可能会覆盖前一个。

此外,在您的代码中,您所要做的就是写入应用程序范围。这并不是真正的声明另一个cfapplication。

不过,还是有几个建议。您的大cfif区域用于会话值,只需使用cfparam:

代码语言:javascript
复制
<cfparam name="session.prop_st" default="">

这样,如果它还不存在,它就会被创建。

此外,如果您使用的是最新的ColdFusion,则不需要围绕会话作用域进行绑定。你应该锁定应用程序的作用域设置,但是因为你是在Application.cfm中设置它们,所以这有点傻。我会使用另一个作用域,比如request作用域。

在您的cfif cgi.script_name上,您不需要在该变量周围使用#符号。唯一需要它们的时候是在cfoutput中引用它们或输出它们的时候(或者与Evaluate()一起使用来创建动态变量时)。

我希望这能帮到你。

票数 3
EN

Stack Overflow用户

发布于 2012-02-07 03:52:30

从技术上讲,你可以做到的。其结果是,与第一个标签调用相关联的应用程序、客户端和会话作用域将仅在第二个标签调用之前可用。在这一点上,对这些作用域的所有后续引用都将引用由后一个标记定义的上下文。然而,这样做是一个好主意的情况并不多见。

票数 1
EN

Stack Overflow用户

发布于 2012-02-07 04:03:54

使用Sean Corfield的方法在扩展根Application.cfc的子文件夹中创建一个Application.cfc。

https://stackoverflow.com/a/307441/11047

根Application.cfc将包含所需的所有主要应用程序和会话变量。子目录的Application.cfc将包含"QSvalues“应用程序的所有应用程序和会话变量。但是,这些变量将位于application.qsValues和session.qsValues中。

不是application.number,是application.qsValues.number。不是session.prop_st,是session.qsValues.prop_st。

这样做,您可以拥有任意多的“子应用程序”,但它们将全部存在于单个APPLICATION.NAME中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9166068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档