ColdFusion 9 Form-在低级别保护对象
我正在考虑在我的模型中保护一个低级对象(一个“成员”对象),因此默认情况下只能从中访问某些信息 这里有一个可能的方法(如果可行的话,那就太性感了!) 1) 向对象本身添加一个名为“locked”的属性,默认为“true” 这样做的唯一选项是使用接受查询的formula属性,而不是将其绑定到db表列。因此,要将默认值锁定为TRUE,我有:ColdFusion 9 Form-在低级别保护对象,orm,coldfusion,coldbox,Orm,Coldfusion,Coldbox,我正在考虑在我的模型中保护一个低级对象(一个“成员”对象),因此默认情况下只能从中访问某些信息 这里有一个可能的方法(如果可行的话,那就太性感了!) 1) 向对象本身添加一个名为“locked”的属性,默认为“true” 这样做的唯一选项是使用接受查询的formula属性,而不是将其绑定到db表列。因此,要将默认值锁定为TRUE,我有: <cfproperty name="locked" formula="select 1" /> 2) 然后,我覆盖现有的集合ER并让ER使用以
<cfproperty name="locked" formula="select 1" />
2) 然后,我覆盖现有的集合ER并让ER使用以下内容:
e、 g
if(this.getLocked()){
返回这个.getScreenName();
}否则{
返回这个.getFullname();
}
3) 当我这样使用它时:
<p> #oMember.getFullName()# </p>
#oMember.getFullName()
显示屏幕名称(太棒了!)
但是。。。当我这样做时:
<cfset oMember.setLocked(false)>
<p> #oMember.getFullName()# </p>
#oMember.getFullName()#
就这么挂了!!!似乎试图设置使用“公式”定义的属性是不可能的
有什么想法吗?有没有其他方法可以将属性附加到ORM对象,这些属性在db中不存在的情况下是可获取和可设置的
感谢您的想法
还有其他方法可以得到属性吗
附加到以下对象的ORM对象:
没有它们就可以获取和设置
是否存在于数据库中
对
是因为在函数的else语句中,您再次调用了相同的函数名吗?所以它只是重复出现 尝试重命名函数名,使其不重写隐式getter,然后查看发生了什么。比如说
<cffunction name="getNewname" returnType="string">
<cfscript>
if (this.getLocked()) {
return this.getScreenName();
} else {
return this.getFullname();
}
</cfscript>
if(this.getLocked()){
返回这个.getScreenName();
}否则{
返回这个.getFullname();
}
谢谢你,亨利。我似乎还是有同样的行为。。。。一旦我尝试设置锁定(true),代码就会挂起(似乎返回一个空页…)。亨利:似乎Hibernate没有定义隐式设置器setLocked。。。。但是,当我创建一个时,它似乎不起作用。。。我开始认为这可能是一个CF ORM错误。您认为呢?如果您在CFC中将“locked”定义为属性,那么getLocked()和setLocked()应该是可用的。它是由CF生成的,而不是Hibernate。也许你忘了在构造函数或sudo构造函数中设置变量。lock=#defaultLockState#?
<cfproperty name="locked" persistent=false>
<cffunction name="getNewname" returnType="string">
<cfscript>
if (this.getLocked()) {
return this.getScreenName();
} else {
return this.getFullname();
}
</cfscript>