2014-06-16 4 views
0

ColdFusion을 처음 사용하고 숫자에 대한 GET 매개 변수를 확인하지 않는 기존 코드를 발견했습니다. 비슷한 코드를 추가하려고합니다.ColdFusion 범위를 쉽게 확인한 다음 해당 범위를 벗어나는 값을 선택하십시오.

<cfparam name="URL.count" 
      default="5" 
      min="1" max="9999" 
      type="range"> 

아무도 단지 50,000이나 -1과 같은 임의의 값을 추가 할 수 없도록했습니다. 그 범위를 벗어난 경우 ColdFusion에서 지정된 기본값을 사용 하겠지만 대신 예외가 발생하고 아무것도 지정되지 않은 경우에만 기본값을 사용하는 것으로 보입니다.

예외를 잡으려고 시도 할 수는 있지만, 그런 상황을 처리하기위한 ColdFusion의 더 나은 실습이 없다면이 기능을 처음 접했기 때문에 궁금합니다. 아마도 내가 알지 못하는 또 다른 ColdFusion 태그가있을 것입니다.

답변

1

ColdFusion에서 이것을 처리하는 방법은 if ​​/ else와는 다른 언어입니다.

if (url.count <= 99999) { 
code for good count 
} 
else { 
code for bad count 
} 

이제 URL 변수이기 때문에 그걸 제어 할 수도 있습니다. method = "get"형식에서 오는 경우 위에서 보인 서버 측 유효성 검증을 대체하지 않고 일부 클라이언트 측 유효성 검증을 기능 보강에 추가 할 수 있습니다.

마찬가지로 생성 된 앵커 태그 또는 cflocation 태그에서 오는 경우 해당 코드를 생성하여 상황을 방지 할 수 있습니다.

1

CFPARAM은 아직 정의되지 않은 경우 변수의 기본값을 설정하는 데 사용됩니다. 변수의 데이터 유형을 확인하는 데 사용할 수는 있지만 값과 관련된 조건부 논리는 수행 할 수 없습니다. 수동으로해야합니다.

<cfparam name="URL.count" type="numeric" default="5"> 
<cfif (url.count LT 1) OR (url.count GT 9999)> 
    <cfthrow type="error" message="The current count (#url.count#) is outside of the allowed range."> 
</cfif>
+0

버머. 범위 밖의 값을 잡으려고 try/catch 블록에 대해 생각해 봤지만'outside-of-range-default = 5' 또는 그와 비슷한 멋진 것이 있었으면합니다. – user3735197

1

최소 및 최대 결합. 나는 좀 더 장황 할 것이지만 혼란 스럽다. (사이의 최대 및 최소 간의 ...)보다 읽기 함수로서

Min(Max(lower_boundary,currentnumber),upperBoundary) 

,

<cfscript> 
    numeric function uForceRange(required numeric cNum, required numeric lNum, required numeric hNum) { 
    return Min(Max(arguments.lNum,arguments.cNum),arguments.hNum); 
    } 
</cfscript> 

<cfoutput><pre>Between 1 and 10: 
7: #uForceRange(7,1,10)# 
0: #uForceRange(0,1,10)# 
42: #uForceRange(42,1,10)# 
10.4: #uForceRange(10.4,1,10)#</pre></cfoutput> 

이 간단한 함수가 어떤 언어 마찬가지로 쉽게 구현 물론이다.

관련 문제