在ColdFusion中,非持久性属性是否可以具有动态值?
一个例子是
Item.cfc
property name="myID" length="100" type="string" fieldtype="id" generator="guid";
property name="hasImageFlag" persistent=false default="{isNull(getItem().getIcon())};
property name="Icon" fieldtype="many-to-one" fkcolumn="imageID" cfc="image" lazy="true";
所以在这个例子中,hasImageFlag可能只是isNull(getItem()。getIcon()),它将返回true或false。
答案 0 :(得分:2)
不,你不能在cfproperty中这样做。有两个原因。
它根本不允许动态默认值。所以你甚至不能做default =“#arrayNew(1)#”
在您的情况下,此代码运行时此类的getItem()方法尚不存在。
当我需要动态默认值时,我在init()构造函数方法中完成了它,以便在创建对象后立即发生。
答案 1 :(得分:0)
实际上,您似乎正在尝试重新发明Hibernate公式,这些公式也可以通过CF的ORM系统访问。
答案 2 :(得分:0)
使用Hibernate事件监听器怎么样? Ben Nadel有a decent primer here。
您可以使用preLoad或postLoad ...
执行您想要的操作