4

ネストされた ORM 関係を処理する場合、cfdumpまたはwriteDumpを使用すると、すぐにjava.lang.OutOfMemoryErrorエラーが発生する可能性があります。これは、CF がネストされたオブジェクトの関係を解決しようとして、あまりにも多くのオブジェクトをダンプしようとするためです。

これは、属性を使用して回避できますtop。たとえば、次のようになります。<cfdump var=#SomeObject# top=3 />

いつもこれを書くのを覚えておくのは面倒です.ORMオブジェクトを扱うときにCFがあまり多くのレベルを下らないように設定する方法はありますか?

4

1 に答える 1

5

このための管理者設定はないようです。(問題提起)

{cfusion}/wwwroot/WEB-INF/cftags/dump.cfm不完全な解決策は、(たとえば) に名前を変更して cfdump タグのラッパーを作成し、次の内容を含むorigdump.cfm新しいdump.cfmファイルを作成することです。

<cfif isObject(attributes.var) AND NOT StructKeyExists(attributes,'top')>
    <cfset attributes.top = 3 />
</cfif>

<cforigdump attributecollection=#attributes# />

<cfexit method="exitTag" />

幸いなことに、writeDump 関数はこのラッパーを呼び出します (したがって、タグと関数の両方で機能します)。

残念ながら、ラッパーは再帰的に呼び出されません - ORM オブジェクトが構造体または配列にある場合、元の問題は依然として顕在化します - 複雑な変数を事前にスキャンして、内部に関係があるかどうかを判断し、適切なトップ値を設定することができる場合があります。しかし、これで達成できる解決策は限られています (つまり、隣接する構造体/配列に影響を与える可能性があります)。

于 2013-08-05T10:05:59.930 に答える