ColdFusion 9 Form-在低级别保护对象

ColdFusion 9 Form-在低级别保护对象,orm,coldfusion,coldbox,Orm,Coldfusion,Coldbox,我正在考虑在我的模型中保护一个低级对象(一个“成员”对象),因此默认情况下只能从中访问某些信息 这里有一个可能的方法(如果可行的话,那就太性感了!) 1) 向对象本身添加一个名为“locked”的属性,默认为“true” 这样做的唯一选项是使用接受查询的formula属性,而不是将其绑定到db表列。因此,要将默认值锁定为TRUE,我有: <cfproperty name="locked" formula="select 1" /> 2) 然后,我覆盖现有的集合ER并让ER使用以

我正在考虑在我的模型中保护一个低级对象(一个“成员”对象),因此默认情况下只能从中访问某些信息

这里有一个可能的方法(如果可行的话,那就太性感了!)

1) 向对象本身添加一个名为“locked”的属性,默认为“true”

这样做的唯一选项是使用接受查询的formula属性,而不是将其绑定到db表列。因此,要将默认值锁定为TRUE,我有:

<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>