我正在开发一个插件来处理网站成员的更高级搜索,并查看网站成员的高级搜索(cpublicusers.dsp_advancedsearch.cfm)我发现它的分页方式是它设置了搜索表单到会话。我尝试使用以下代码执行以下操作:
<cfif NOT structKeyExists(SESSION,'reportForm')>
<cfset SESSION.reportForm = FORM />
<cfset sessionisset = true />
<cfelse>
<cfset sessionisset = false />
sessionisset变量仅供我测试。 当我尝试导航到分页时,我发现正在清除session.reportForm变量。任何人都可以解释为什么会这样。
答案 0 :(得分:1)
FORM是在每个页面上重新初始化的系统结构。结构通过“引用”传递,这意味着您只是存储指向FORM的指针。因此,当FORM重新初始化时 - 您的会话变量也是如此。
修复方法是对结构进行深层复制,使其不受FORM更改的影响。 查看sourceprint?
<cfset SESSION.reportForm = duplicate(FORM) />