2016-08-16 3 views
-1

ColdFusion에서 아약스와 함께 전달되는 인수에 대한 질문이 있습니다. 그래서 저는 date1, date2 및 meetingDate를 전달하는 3 가지 인자를 가지고 있습니다. 이러한 인수 중 세 가지를 비교하고 날짜를 기준으로 문자열을 반환해야합니다.ColdFusion에 인수가 있는지 확인하십시오.

내 현재 코드는 하나의 문제, 난 그냥이 두 날짜 중 하나를 통과 (날짜 1 또는 날짜 2) 난 항상 얻을 것이다 경우가 있습니다 "blockDate는"내 아약스 기능을 반환
<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는 전달하지 않으면 내 elseif는 여전히 실행됩니다. 그래서 하나의 추가 cfif를 사용하여이 문제를 해결하고 date1과 date2 isDefined가 있는지 확인했지만 문제가 해결되지 않았습니다. 누구든지이 버그를 고치는 방법을 알고 있다면 알려주십시오.

미리 감사드립니다.

+1

사용하는 기본 설정됩니다. –

+3

인수를 필수로 설정하거나 비즈니스 요구 사항 중 어느 것이 든 만족스러운 기본값을 지정하십시오. –

+0

... 질문 제목에도 불구하고 게시 된 코드는 3 개의 모든 인수를 마치 * 항상 존재하는 것처럼 사용합니다. 함수가 호출 될 때'yourFunctionName (date1, meetingDate)'또는'yourFunctionName (date1, ", meetingDate)'빈 값을 전달하는 인수를 실제로 생략하고 있습니까? – Leigh

답변

1

이 문제를 해결할 수있는 몇 가지 방법이 있습니다. 내가 그것을 이해함에 따라; 인수는 항상 존재하지만, 당신은 그것이 공백 값을 가질 수도 있다고 우려하고 있습니다.

다음은 당신이 시작하는 데 적용 할 수 있어야합니다 몇 가지 아이디어가 있습니다 : 나는 CFIF이 표시되지 않는

<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> 
관련 문제