如何在结构中将数组的索引设置为变量(Coldfusion)

时间:2016-11-17 20:32:31

标签: arrays coldfusion

这是我收到的第一个错误: CFSQLTYPE CF_SQL_VARCHAR

的数据无效[d6-2014-74 ,,]

这是相应的代码。

 <cfset x = Arguments.surveyDocNo>
 <cfprocparam cfsqltype="cf_sql_varchar" value="#x#">

First Error Image:

要解决这个问题,我将代码更改为:

 <cfset x = Arguments.surveyDocNo[1]>

然而,这会返回此错误:

500您试图将类型为java.lang.String的标量变量取消引用为具有成员的结构。

Error 2

所以阵列问题已修复,但我不知道如何修复第二个错误。

 <cfdump var="#arguments.surveyDocNo#">

enter image description here

1 个答案:

答案 0 :(得分:4)

我假设您有时将surveyDocNo参数作为字符串传递,有时也作为字符串数组传递。

<!--- if argument is passed as array, take the first element --->
<cfif isArray(Arguments.surveyDocNo) and (not arrayIsEmpty(Arguments.surveyDocNo))>
    <cfset x = Arguments.surveyDocNo[1]>
<cfelse>
    <cfset x = Arguments.surveyDocNo>
</cfif>

<!--- if the provided argument is not a string, throw an exception --->
<cfif not isSimpleValue(x)>
    <cfthrow type="IllegalArgumentException" message="The provided value for argument [surveyDocNo] is invalid. Expected a string.">
</cfif>

<cfprocparam cfsqltype="cf_sql_varchar" value="#x#">