使用我提供的示例,我想为索引。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)不会传递给后续请求。