我调用CFC,CFC将有争论,像这样一组默认:您可以重新分配cfc中的默认<cfargument吗?
<cfargument name="EMAIL_TEMPLATE_CODE" type="string" required="yes" hint="EMAIL_TEMPLATE_CODE is required.">
<cfargument name="EMAIL_TEMPLATE_SUBJECT" default="" type="string" required="no" hint="EMAIL_TEMPLATE_SUBJECT is NOT required.">
<cfargument name="EMAIL_TEMPLATE_BODY" default="" type="string" required="no" hint="EMAIL_TEMPLATE_BODY is NOT required.">
我想要做的就是这些论据并不requred(你可以通过所需=“没有看到“)但我想重新分配变量,如果需要的话。
因此,像:
<cfargument name="EMAIL_TEMPLATE_CODE" type="string" required="yes" hint="EMAIL_TEMPLATE_CODE is required.">
<cfargument name="EMAIL_TEMPLATE_SUBJECT" default="" type="string" required="no" hint="EMAIL_TEMPLATE_SUBJECT is NOT required.">
<cfargument name="EMAIL_TEMPLATE_BODY" default="" type="string" required="no" hint="EMAIL_TEMPLATE_BODY is NOT required.">
<cfinvoke component="#Request.CFCPath#.email_template" method="getEmailTemplate" returnvariable="getEmailTemplate">
<cfinvokeargument name="EMAIL_TEMPLATE_CODE" value="#ARGUMENTS.EMAIL_TEMPLATE_CODE#">
</cfinvoke>
<cfif getEmailTemplate.RecordCount>
<cfparam name="ARGUMENTS.EMAIL_TEMPLATE_SUBJECT" default="#getEmailTemplate.EMAIL_TEMPLATE_SUBJECT#" type="string">
<cfparam name="ARGUMENTS.EMAIL_TEMPLATE_BODY" default="#getEmailTemplate.EMAIL_TEMPLATE_BODY#" type="string">
</cfif>
但我不能够覆盖默认参数变量。有什么可以发现我做错了吗?
编辑:
我这样做,因为如果没有参数传递给CFC,我想创建一个。我想我应该cfset一个局部变量,如果参数没有长度?
<cfif Len(ARGUMENTS.EMAIL_TEMPLATE_ADDRESS_FROM)>
<cfset EMailTemplateAddressFrom = ARGUMENTS.EMAIL_TEMPLATE_ADDRESS_FROM>
<cfelse>
<cfset EMailTemplateAddressFrom = getEmailTemplate.EMAIL_TEMPLATE_ADDRESS_FROM>
</cfif>
在我问这个问题之前,我尝试了你之前提供的第一个选项。看起来,无论出于何种原因,如果有任何事情超出论据,函数就会错误地出错。为了将默认值设置为#getEmailTemplate.EMAIL_TEMPLATE_ADDRESS_FROM#我需要在参数上面运行查询。奇怪的行为,我从来没有遇到过这个问题,直到今天。 – jyoseph 2009-08-12 00:57:44
好吧,这取决于它是否可以引用变量getEmailTemplate,无论它是什么。如果它是This或Variables作用域中的变量,那就没问题。 – Henry 2009-08-12 01:25:30