可以在Application中设置会话变量.CFC,然后从任何应用程序页面检索它



使用我提供的示例,我想为索引。cfm显示hello我该怎么做呢?

Application.cfc

<cfcomponent>
    <cfset this.sessionManagement = true /> 
    <cffunction name="onSessionStart">
        <cfset SESSION.myVar = "hello">
    </cffunction>
</cfcomponent>

index.cfm

<html>
    <head>
    <title>Testing</title>
    </head>
    <body>
        <cfoutput>#SESSION.myVar#</cfoutput>
    </body>
</html>

我发现当我加上

<cfinvoke component="Application" method="onSessionStart">

到索引。

您需要为您的应用程序命名,例如:

<cfset this.name = "foo">

在你的应用程序中。氯氟化碳pseudo-constructor。否则CF不能创建应用程序,因此它不能将会话与应用程序关联。

我假设您是ColdFusion或至少是Application的新手。onSessionStart是在应用程序中初始化会话变量的基本方法。当然,它们可以在任何其他页面中设置/删除/重置,因此在输出它之前检查SESSION作用域中变量的存在可能是一个好习惯:

<cfif StructKeyExists(SESSION, "myVar")>
    <cfoutput>#SESSION.myVar#</cfoutput>
</cfif>

如果变量不持久,您是否检查了会话超时设置(在ColdFusion Administrator中)?您可以在这里设置它,这将为服务器上的所有应用程序设置默认值,或者您可以在Application.cfc:

中设置它。
THIS.SessionTimeout = CreateTimeSpan(0, 1, 0, 0); // One hour Session Timeout

是的,你可以在onSessionStart中设置变量并在应用程序中使用它们。onSessionStart函数仅在创建新会话时触发,因此,如果在每个请求中都调用它,则会话不会持久(您的cfd/CFTOKEN, JSESSIONID)不会传递给后续请求。

相关内容

最新更新