2

我已经开始在 Coldfusion 9 中使用 ORM,但是我遇到了一个问题,我设置了一个 CFC,persistant=true以便在我运行时myCFC.init()分配属性的默认值 - 但我不想要将此 CFC 与 ORM 一起使用。

问题是 Coldfusion 抛出错误“为 cfc myCFC 定义的表 myCFC 不存在”。

有没有办法让我的应用程序忽略某些 CFC?或者只关注特定的 CFC,除了persistant=true

或者,我可以在不使组件持久化的情况下让我的默认属性值生效吗

4

2 回答 2

1

或者,我可以让我的默认属性值生效而不使组件持久化吗?

是的,只需将它们设置在您的init()方法中。

<cfcomponent name="person" persistent="false" output="false">

 <cfproperty name="gender"><!--- Non-persistent CFC: you can't set a default here --->

 <cffunction name="init" output="false>
  <cfset variables.gender = "m"><!--- Set the default here --->
 </cffunction>

</cfcomponent>

您还需要在持久 CFC 中为任何复杂或动态值默认值(例如数组或当前日期)执行此操作,因为您只能在属性声明中设置简单的默认值(例如文字字符串或整数)。

<cfcomponent name="person" persistent="true" table="persons" output="false">

 <cfproperty name="gender" default="m"><!---Persistent CFC, so this simple default will be set --->
 <cfproperty name="dateCreated"><!---You can't set a default dynamic date value --->

 <cffunction name="init" output="false>
  <cfset variables.dateCreated= Now()><!--- Set the current datetime here --->
 </cffunction>

</cfcomponent>
于 2012-09-10T07:42:27.070 回答
0

您在开头和第一个之间放置的任何代码都将被执行。我假设您使用 CFproperty 标签来设置您的默认值。相反,请使用以下结构:

<cfcomponent name="aCFC">

    <!---
    || Psuedo Constructor code: this code runs when the object is created.
    ||--->

    <cfset defaultVar_1 = "default value">
    ...etc

    <cffunction name="firstFunction">
        ...
    </cffunction>
</cfcomponent>
于 2012-09-05T15:47:46.373 回答