我已经开始在Coldfusion 9中使用ORM,但是我遇到了一个问题,我将CFC设置为persistant=true
,这样当我运行myCFC.init()
默认值时已分配属性的值 - 但我不想将此CFC与ORM一起使用。
问题是Coldfusion会抛出错误“mycFC为cfc myCFC定义的表不存在。”
有没有办法让我的应用程序忽略某些CFC?或者只关注persistant=true
或者,我可以在不使组件持久化的情况下使我的默认属性值生效
答案 0 :(得分: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>
答案 1 :(得分: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>