由于我使用的系统具有登录和注销功能,因此当我登录系统时,我在会话中。我是Session的新手,我的问题是我在任何coldfusion页面中定义的任何变量及其值,我能在任何页面上使用它吗?
例如,在浏览我的系统代码时,我遇到了以下第一行:每个CFML页面:
<cfparam name="INPUTID" default="0">
然后在页面的某个地方,我看到这个变量被用作#INPUTId#
。
请澄清
答案 0 :(得分:4)
要回答“我在任何coldfusion页面中定义的任何变量及其值,我能否在任何页面上使用它”......这取决于。
如果您设置会话变量,例如<cfset session.foo = "bar" >
然后您可以在任何页面上调用#session.foo#
,因为它将存储在用户的会话中。
但是,如果您只是设置一个值,例如<cfset foo="bar" >
然后它将在“变量”范围内结束,并且仅在该页面或请求中可用。 (在该注释中,CF具有特定的“请求”范围,例如request.foo
,用于此目的,可在设置值的位置之后的任何代码中,在同一请求或页面视图中使用)
因此,如果要设置可在其他页面上使用的值,请使用会话。但是要小心,在尝试从用户的会话中调用默认值之前,您还需要使用cfparam
来设置默认值,或者使用structKeyExists()
来检查值,因为除非它可能不存在,否则值可能不存在已经设定好了。否则,对于同一页面中使用的值,请使用“请求”范围,或查看其他范围的CF文档,例如:变量,本地等等。