我的公司已经随意将我们网站的生产服务器升级到CF9,虽然我们相对幸运且几乎没有兼容性,但我遇到的一个问题是,在过去的一周里我已经引起了相当大的悲痛。
我们的网站使用Coldbox框架和Transfer ORM,通过抽象对象继承功能。以前在CF8中,当我将cfdump一个对象时,我可以查看对象中存在的所有setter和getter。但是,CF9修改了cfdump函数以仅转储对象的元数据。新的CF9文档声明有一个metainfo标记,当设置为true时,应该转储继承的对象(比如我的数据库列的setter和getter),但在这种情况下,它不起作用。
虽然最终这不是一个突破性的问题,但它对我来说变得相当痛苦,因为我没有死记硬背这些对象中的所有功能;我将寻找转储函数,因为我知道我正在寻找什么,但不记得名字,只是发现它没有被转储,因为它从Transfer继承的方式。到目前为止,我已经尝试过以下的解决方案而没有任何运气:
cfdump metainfo = true 在抽象装饰器中创建转储功能 在基础装饰器中创建转储功能 在定义的覆盖装饰器中创建转储函数
我们正在使用最新版本的Coldspring和Transfer,以及Coldbox 2.6.4。任何关于变通方法或解决方案的见解都将不胜感激。
答案 0 :(得分:4)
如果你没有让cfump为你做这件事,首先要做的是在http://cfbugs.adobe.com/cfbugreport/flexbugui/cfbugtracker/main.html提交一个错误
接下来我要做的是在单独的选项卡中使用组件浏览器来保存随时可以使用的完整组件文档的随时可用的副本:
http://[yoursite]/CFIDE/componentutils/componentdoc.cfm
比cfdump更快,保存,重新加载,检查,撤消,保存,重新测试。组件文档应该显示所有继承的方法。
答案 1 :(得分:1)
如果您仍然真的想要旧功能,并且您碰巧在某处安装了CF8 CFDUMP是作为自定义标签实现的,那么您可以从CF8中获取旧版本并将其移植到您的cf9安装中。
只需复制/WEB-INF/cftags/dump.cfm并在你去的时候重命名..
答案 2 :(得分:0)
如何创建执行此操作的转储功能
<cfdump var="#myobject#" label="built-in dump">
<cfdump var="#getMetaData(myobject)#" label="object metadata">
getMetaData()会返回你的getter和setter