【问题标题】:ColdFusion isDefinedColdFusion 已定义
【发布时间】:2014-05-16 00:06:32
【问题描述】:

我正在尝试检查我的表单中是否存在数据如果数据不存在我想将其分配给 O。我该怎么做。

<cfif not isDefined("FORM.Age")>
 cfset FORM.Age = "0"
<cfif>

【问题讨论】:

  • 从技术上讲,只要将 cfset 包含在标签 &lt;&gt; 中,就可以了。假设遗漏只是一个错字,您是否正在尝试将它与文本字段一起使用?文本字段始终存在。该值可能是一个空字符串,但该字段本身仍然存在,因此IsDefined 将始终返回 true。如果是这种情况,您需要检查字段长度或值。如果它是空的,那么根据你的标准做一些事情。
  • @Leigh... 你应该将其设为“答案”。

标签: coldfusion


【解决方案1】:

一般认为最好的做法是避免使用 isDefined。这是因为 isDefined 将搜索所有范围,直到找到匹配的变量。所以使用structKeyExists效率更高,例如:

<cfif NOT structKeyExists(form, "age")>
   <cfset form.age = 0>
</cfif>

另外,实现此目的的另一种方法是使用 cfparam,并指定 0 作为默认值:

<cfparam name="form.age" default="0">

【讨论】:

  • 不是所有范围,但在处理unscoped variables时会搜索其中的大部分。在某些情况下,这可能会导致意想不到的结果。通常 structKeyExists 更好,因为它更精确。
【解决方案2】:

你快到了:

<cfif not isDefined("FORM.Age")>
<cfset Form.Age = 0>
</cfif>

【讨论】:

    【解决方案3】:

    从技术上讲,一旦您将cfset 包含在标签&lt;&gt; 中,您所拥有的一切就很好了。假设遗漏只是一个错字,您是否正在尝试将它与文本字段一起使用?

    文本字段在提交时始终存在。该值可能是一个空字符串,但该字段本身仍然存在,因此IsDefined 将始终返回true。如果是这种情况,您需要检查字段长度或值。然后根据您的标准做一些事情,如果它是空的。例如:

     <!--- value is an empty string --->
     <cfif NOT len(FORM.age)>
         do something 
     </cfif>
    
     ... OR 
    
     <!--- value is an empty string or white space only --->
     <cfif NOT len(trim(FORM.age))>
         do something 
     </cfif>
    
     ... OR 
    
     <!--- convert non-numeric values to zero (0) ---> 
     <cfset FORM.Age = val(FORM.Age)>
    

    【讨论】:

      【解决方案4】:

      实际上,您需要确保两件事。首先,确保通过提交正确的表单到达此页面。接下来,确保您有一个用于 form.age 变量的数值。以下是您可能希望如何编写代码的示例:

      <cfif StructKeyExists(form, "age") and cgi.http_referrer is what it should be>
          <cfif IsNumeric(form.age) and form.age gt 0>
              <cfset AgeSubmitted = int(form.age)>
          <cfelse>
              <cfset AgeSubmitted = 0>
          </cfif>
          ...more code to process form
      <cfelse>
          ...code for when page was not arrived at properly
      </cfif>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-14
        • 2012-05-13
        相关资源
        最近更新 更多