如何从ColdFusion结构对象中获取值

时间:2015-01-13 21:41:11

标签: pdf struct coldfusion

我正在创建一个pdf文档(通过ColdFusion),并在浏览器中呈现pdf。 pdf表单已经创建,我正在预填充字段。

所以我正在做的是从pdf中转出变量以用作cfpdfformparam中的名称。 (获取变量)那么我正在做的是创建所有者电子邮件是pdf中变量的名称,然后是我从另一个表单中分配会话变量的值。因此他们输入的内容以他们需要填写的形式预先填写。所以真正的名字决定了pdf上的位置,而值是在另一个表格上输入的会话变量。

我遇到的问题是已经创建的变量,其中一些变量在变量中有structs因此我不知道如何在(名称部分)中调用它们以便预填充填充信息。

例如,当它们在变量中包含结构时,如何为FEID / DL / DMVacct和FL reg预填充信息?:

像这样?:<cfpdfformparam name="FEID/DL/DMVacct##" value="#session.checkout.info.driverlicense_1#">

<cfpdfform action="read" source="82040y.pdf" result="data" />
<cfdump var="#data#" />

enter image description here enter image description here

我预填充pdf表单字段(通过ColdFusion会话变量),然后使用以下标记呈现pdf:

<cfpdfform source="82040.pdf" action="populate">
  <cfpdfformparam name="org" value="">
</cfpdfform>

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:7)

您可以访问嵌入在结构中的变量,如下所示:

<!--- using dot notation --->
<cfif StructKeyExists(myStruct, "myKey")>
    <cfoutput> #mystruct.myKey#</cfoutput><br>
</cfif>

<!--- or using access notation --->
<cfif StructKeyExists(myStruct, LastName)>
    <cfoutput>#LastName#: #mystruct[LastName]#</cfoutput><br>
</cfif>

您可以使用IsDefined查看值是否存在:

IsDefined("structure_name.key")>

但是,如果密钥是动态的,或者包含特殊字符,则必须使用StructKeyExists函数。

  

注意:您必须注意ColdFusion中的变量名称。如果用作变量名,则分配给结构值的某些名称将被视为无效。因此,如果您的结构名称包含无效字符,则需要通过访问符号来访问它们以便检索它们:

<!--- use access-notation for value names with special chars --->
data["FEID/DL/DMVacct"]["#"]

否则,如果尝试使用点符号,则会出现运行时错误:

<!--- Invalid markup! Don't do this! --->
#data.FEID/DL/DMVacct.##

以下是一些如何访问数据的示例:

<!--- Output the value --->
<cfoutput> #data["FEID/DL/DMVacct"]["#"]#</cfoutput><br>

<!--- Storing the value in a variable named 'myVar' --->
<cfset myVar = #data["FEID/DL/DMVacct"]["#"]# />
<cfoutput>#myVar#</cfoutput>

如果你的结构名称遵循ColdFusion的variable naming rules,那么你也可以用点符号访问你的数据,注意我将值名FEID/DL/DMVacct#更改为有效的变量名:{ {1}}和FEID_DL_DMVacct

num

希望这有帮助!

答案 1 :(得分:6)

structName['FEID/DL/DMVacct']['##'] = variable

您需要使用双#来转义它们并生成一个单数#