我有这种形式的各种员工认证,我需要输入一个日期。有时这个日期将是未来几个月,其他日期将是未定义的,null。
每当我尝试将空值传递给我的CFC时,我总是会收到如下错误:
传递给addEmployee函数的CPRADULTEXP参数不是date类型。
我的表格代码:
<!--- If null, set a default if not, set the default to database default --->
<cfif not isDefined("certificationsList.cprAdultExp")>
<cfinput type="datefield" required="no" name="cprAdultExp" value="" >
<cfelse>
<cfinput type="datefield" required="no" name="cprAdultExp" value="#dateformat(certificationsList.cprAdultExp, "mm/dd/yyyy")#" >
</cfif>
表格处理器:
<!--- Is the date defined? --->
<cfif len(Trim("form.cprAdultExp")) EQ 0>
<cfinvokeargument name="cprAdultExp" value="#CreateODBCDate(Form.cprAdultExp)#">
<cfelse>
<cfinvokeargument name="cprAdultExp" value="">
</cfif>
现在它传递的是null值,数据库被设置为处理/接受空值。
我该如何解决?
答案 0 :(得分:3)
你遗漏了最重要的部分 - 实际的CFC和执行插入的查询。发生的事情是您的<cfargument>
标记被输入为'date',因此当您传递空字符串时,验证失败。 (这是我不输入我的论点的原因之一)。
您需要关闭类型检查或将参数类型更改为“string”或“any”。现在,当你这样做时,你还需要更改你的<cfqueryparam>
标签(你 使用<cfqueryparam>
,不是吗?!)这样的事情:< / p>
<cfqueryparam .... null="#not len(trim(arguments.thedate))#" />
那会解决你的问题......