Pet*_*ton 4 coldfusion orm cfdump cfml
处理嵌套的ORM关系时,使用cfdump或writeDump会很快导致java.lang.OutOfMemoryError错误,因为CF会尝试解析嵌套对象中的关系并转储太多对象.
使用该top属性可以避免这种情况,例如:<cfdump var=#SomeObject# top=3 />
记住要记住这一点是一件痛苦的事情 - 在处理ORM对象时,有没有办法配置CF不会下降太多级别?
似乎没有任何管理员设置.(提出的问题)
一个不完美的解决方案是通过重命名{cfusion}/wwwroot/WEB-INF/cftags/dump.cfm为(例如)origdump.cfm然后创建一个dump.cfm包含以下内容的新文件来为cfdump标记创建一个包装器:
<cfif isObject(attributes.var) AND NOT StructKeyExists(attributes,'top')>
<cfset attributes.top = 3 />
</cfif>
<cforigdump attributecollection=#attributes# />
<cfexit method="exitTag" />
Run Code Online (Sandbox Code Playgroud)
幸运的是,writeDump函数将调用此包装器(因此它适用于标记和函数).
不幸的是,包装器不是递归调用的 - 如果ORM对象在结构或数组中,那么原始问题仍然表现出来 - 可能预先扫描复杂变量以确定内部是否存在关系并设置适当的顶部值,但是这只能实现有限的解决方案(即它会影响相邻的结构/数组).