【问题标题】:Check if argument exist in ColdFusion检查 ColdFusion 中是否存在参数
【发布时间】:2016-08-25 21:53:54
【问题描述】:

我有一个关于coldfusion 中通过ajax 传递的参数的问题。所以我有三个参数要传递 date1、date2 和 meetingDate。我必须比较其中三个参数并根据日期返回字符串。这是我的逻辑:

<cfset sigDate1 = dateFormat(trim(arguments.date1),'yyyy/mm/dd')>
<cfset sigDate2 = dateFormat(trim(arguments.date2),'yyyy/mm/dd')>
<cfset meetDate = dateFormat(URLDecode(arguments.meetingDate),'yyyy/mm/dd')>

<cfelseif (sigDate1 LT meetDate) OR (sigDate2 LT meetDate)>
    <cfset myResult = "blockDate">
<cfelse>

我当前的代码有一个问题,如果我只传递这两个日期之一(date1 或 date2),我的 ajax 函数总是会返回“blockDate”。我检测到了这个问题,如果我只通过 date1 而不是 date2,那么无论如何我的 elseif 仍然会被执行。所以我试图通过使用一个额外的 cfif 来解决这个问题,并检查我的 date1 和 date2 是否是已定义的,但这并没有解决问题。如果有人知道如何解决这个问题,请告诉我。

提前致谢。

【问题讨论】:

  • 我没有看到 CFIF。
  • 强制参数或为它们提供默认值,以满足您的业务需求为准。
  • ... 此外,尽管有问题标题,但发布的代码使用所有三 (3) 个参数,就好像它们始终存在一样。你实际上是在调用函数时省略了参数,即yourFunctionName( date1, meetingDate) 或者只是传入一个空值yourFunctionName( date1, "", meetingDate)
  • 无论如何,我总是在传递论点。这就是导致我的代码崩溃的原因。所以我想知道防止空字符串与日期值进行比较的最佳方法是什么?
  • 在您的 cfargument 标记中指定 type="date"

标签: ajax coldfusion


【解决方案1】:

有几种不同的方法来处理这个问题。据我了解;参数始终存在,但您担心它们可能具有空白值。

以下是一些您应该能够适应以帮助您入门的想法: 使用默认值

<cfset sigDate1 = iif(isDate(trim(arguments.date1),'dateFormat(trim(arguments.date1),'yyyy/mm/dd')','[default value]')/>
<cfset sigDate2 = iif(isDate(trim(arguments.date2),'dateFormat(trim(arguments.date2),'yyyy/mm/dd')','[default value]')/>
<cfset meetDate = iif(isDate(trim(URLDecode(arguments.meetingDate),'dateFormat(trim(URLDecode(arguments.meetingDate),'yyyy/mm/dd')','[default value]')/>

or (test dates)

<cfif isDate(trim(arguments.date1)) and isDate(trim(arguments.date2)) and isDate(URLDecode(arguments.meetingDate))>
    <cfset sigDate1 = dateFormat(trim(arguments.date1),'yyyy/mm/dd')/>
    <cfset sigDate2 = dateFormat(trim(arguments.date2),'yyyy/mm/dd')/>
    <cfset meetDate = dateFormat(URLDecode(arguments.meetingDate),'yyyy/mm/dd')/>
<cfelse>
    <--- error code --->
</cfif>

or (use try block)

<cftry>
    <cfset sigDate1 = dateFormat(trim(arguments.date1),'yyyy/mm/dd')/>
    <cfset sigDate2 = dateFormat(trim(arguments.date2),'yyyy/mm/dd')/>
    <cfset meetDate = dateFormat(URLDecode(arguments.meetingDate),'yyyy/mm/dd')/>
    <cfcatch type="expression">
        <--- error code --->
    </cfcatch>
</cftry>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多