2020. 3. 12. 08:34

coldfusion 주의할 점. ㅠㅠ

1. 변수 scope에 엄청나게 문제가 있음

cfloop(query = querySet) {
    //querySet의 정식사용은 querySet.columnName 임
    //단축 형태로 그냥 columnName으로 사용가능함
    //그런데 단축 형태로 사용할때 큰 문제가 있음

    writeOutput(columnName); //querySet.columnName 을 출력함
    writeOutput(isDefined("columnName")); //yes(true) 존재함
    writeOutput(isNull(columnName)); //yes(true) 존재하지 않음!!!!
}
cfloop(query = querySet) {
    columnName = 10;
    writeOutput(columnName); //10이 아닌 querySet.columnName 을 출력함!!!!
}
function test(required numeric columnName) {
    ...
    cfloop(query = querySet) {
        writeOutput(columnName); 
        //querySet.columnName가 아닌 
        //인자로 전달받은 arguments.columnName을 출력!!!!
    }
}

 

2. serializeJSON 문제

test = {a: 0};

test.a = 1;
writeOutput(serializeJSON(test)); //{"A":1}

test.a += 1;
writeOutput(serializeJSON(test)); //{"A":2.0}
//연산을 하게되면 무조건 실수형으로 변환됨!!!

test = {a: "1.2", b: "3"};
writeOutput(serializeJSON(test)); //{"A":1.2,"B":3}
//string type 이라도 무조건 수치형으로 변환됨!!!!

 

3. 같은 이름의 form element 처리 문제

<input type="text" name="test" value="abc">
<input type="text" name="test" value="">
<input type="text" name="test" value="def">

<!-- 위의 경우 test = "abc,def"로 값이 수신됨  -->
<!-- 몇번째 변수의 값이 없는지 확인하지 못함 -->

<input type="text" name="test" value="abc,def">
<input type="text" name="test" value="">
<input type="text" name="test" value="">
    
<!-- test의 내용중 comma가 존재하면???  -->
<!-- test = "abc,def"로 값이 수신되어 변수 2개에서 수신된것 처럼 됨  -->