2020. 3. 12. 08:34
coldfusion 주의할 점. ㅠㅠ
2020. 3. 12. 08:34 in 팁&테크/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개에서 수신된것 처럼 됨 -->