いくつかのレガシー コードを扱っていると、かなり厄介な状況に遭遇しました。<cfoutput query="x">
タグを使用してクエリをループしています。そのクエリには「url」という名前の列があります。そのループ内で、url スコープ内にキーが存在するかどうかを確認する必要があります。CF は一般的なページ スコープよりもクエリの内容を優先するためstructKeyExists(url,"key")
、この時点で CF に関する限り、url はクエリの現在の行の値を含む文字列であるため、使用できません。
クエリ スコープから抜け出して、URL の内容を調べるにはどうすればよいですか?
一時的に isDefined("url.key") を使用していますが、クエリ スコープから抜け出す方法があるかどうかを知りたいです。
また、列へのすべての参照を変更するために数時間の作業を追跡しなければ、列やクエリの列名を実際に変更することはできないため、可能であればそれを回避します。
編集: このコードがどのように設定されているか、および単純な解決策が適用されない理由について、いくつかの混乱があるようです。完全な例を挙げるのは難しいですが、状況を明確にしようと思います。
次の例では、「pageA」としてカウントされるページが多数あります。物事の仕組みを変えるには、スコープの変更と時間への投資が必要ですが、割り当てられた時間内には起こりません。
PageA は、url という名前の列の 1 つでクエリを実行し、cfoutput を介して出力ループを開始します。そのループ内に PageB が含まれます。ある PageA は、別の PageA とは異なる変数を URL スコープに持つ場合があります。実際にはそれらは同じですが、名前が異なる場合があります (varID=x の場合は vid=x)。PageB の内部では、その url スコープの値を使用する必要があるため、さまざまな可能な名前を実行したいと考えています (キー 'varID' が url に存在する場合はそれを使用し、それ以外の場合は 'vid' を使用します)。
これが、クエリの url 列ではなく、クエリ スコープを「パンチスルー」して url 構造を取得したい理由です。他の方法では、多くの PageAs を変更する必要があるようです。
したがって、問題はこの問題を具体的にどのように解決するかということではありません。それを行うには多くの方法があるため、実装とテストに多くの時間を追加するため、それらを避けたいと思います。url がクエリ列として存在し、クエリ スコープ内にいる場合、変数として url スコープにアクセスする方法はありますか?