我要做的是查看session.checkout.info.gender_1
是否存在,然后检查是否还是男性或女性。具体取决于cfpdfformparam的值是M还是F,以便它更适合表单。我试过“IsDefined”,不是“”。有人请告诉我哪里出错了?
<cfif structKeyExists(session, 'checkout.info.gender_1') and trim("session.checkout.info.gender_1") neq "Female">
<cfpdfformparam name="sex" value="M">
</cfif> <!---Section1 Owner Sex--->
<cfif structKeyExists(session, 'checkout.info.gender_1') and trim("session.checkout.info.gender_1") neq "Male">
<cfpdfformparam name="sex" value="F">
</cfif>
答案 0 :(得分:4)
在您的代码示例中,trim
函数实际上正在修剪字符串&#34; session.checkout.info.gender_1&#34;不是变量。删除引号,然后重试。
<cfif structKeyExists(session, 'checkout.info.gender_1') and trim(session.checkout.info.gender_1) neq "Female">
<cfpdfformparam name="sex" value="M">
</cfif> <!---Section1 Owner Sex--->
<cfif structKeyExists(session, 'checkout.info.gender_1') and trim(session.checkout.info.gender_1) neq "Male">
<cfpdfformparam name="sex" value="F">
</cfif>
答案 1 :(得分:4)
您应该对测试进行分层。你的测试应该更像......
<cfif isDefined("session")
and structKeyExists(session, 'checkout')
and structKeyExists(session.checkout, 'info')
and structKeyExists(session.checkout.info, 'gender_1') >
<cfif session.checkout.info.gender_1 eq "Female">
do this
<cfelse>
do that
</cfif>
</cfif>
答案 2 :(得分:1)
这是一种格式化的评论。像这样排除你的if / else逻辑:
<cfif myVariable is theExpectedValue>
yes
<cfelse>
no
<cfdump var = "expected #theExpectedValue# and got #myVariable#>
</cfif>
完成逻辑分类后,插入每个条件的实际代码。
答案 3 :(得分:0)
试试这个
<cfif structKeyExists(session, 'checkout.info.gender_1') and len(trim(session.checkout.info.gender_1))>
<cfpdfformparam name="sex" value="#UCase(Left(Trim(session.checkout.info.gender_1),1))#">
<cfelse>
<cfpdfformparam name="sex" value="Undefined">
</cfif>
您可能实际上并不希望您的pdf报告说明性别未定义,但这至少可以让您进行一些调试。
但是,由于您正在检查性别的存在,因此它似乎是可选的,在这种情况下,您可以使用相同的代码将性别的值设置为X
或Not Set
,当未定义变量或为空时。
由于您将男性与M和女性匹配为F,我们可以使用Left()
来获取第一个字母。