0

サイトメンバーのより高度な検索を処理するプラグインに取り組んでおり、サイトメンバーの高度な検索 (cpublicusers.dsp_advancedsearch.cfm) を見ると、ページネーションを行う方法は、検索フォームをセッション。このコードを使用して次のことを試みました。

 <cfif NOT structKeyExists(SESSION,'reportForm')>

 <cfset SESSION.reportForm = FORM />

 <cfset sessionisset = true />

 <cfelse>
 <cfset sessionisset = false />

sessionisset 変数は、私のテスト用です。ページネーションに移動しようとすると、session.reportForm 変数がクリアされていることがわかります。これがなぜなのか、誰でも説明できますか。

4

1 に答える 1

1

FORM は、各ページで再初期化されるシステム構造です。構造体は「参照によって」渡されます。つまり、FORM へのポインターを格納するだけです。したがって、FORM が再初期化されると、セッション変数も再初期化されます。

解決策は、構造のディープ コピーを作成して、FORM への変更の影響を受けないようにすることです。ソースプリントを表示しますか?

<cfset SESSION.reportForm = duplicate(FORM) />
于 2013-04-07T13:26:35.440 に答える