...
- 원인
- 매트릭스 표준 보고서 변수 전달 규약은 Base64.encode로 전달 및 decode를 기준으로 합니다.
- Base64.encode되지 않은 값이 자식창에서 base64.encode된 문자열로 오인하여 decode 시도하여 한글이 깨지는 현상이 발생합니다.
해결 방법
- 부모창에서 파라메터 전달 시 Base64.encode 후 전달하는 방법코드 블럭 title 부모창 JScript 예시 linenumbers true collapse true /************************************** * 버튼 컨트롤이 클릭되는 시점에 발생합니다. * * arguments : * string Id (Readonly:False) : 컨트롤이름 * string Text (Readonly:False) : 라벨 값 **************************************/ var OnButtonClick = function(sender, args){ if(args.Id == "Button"){ var val1 = "123"; // 정상 var val2 = "1234"; // 깨짐 Matrix.RunScriptEx("", "Service1", {"VS_VAL1":val1,"VS_VAL2":val2}, function(p) { if(p.Success == false){ Matrix.Alert(p.Message); return; } var ds = p.DataSet; var params = [ { KEY: "VS_DETAIL_CURRENCY1", VALUE: ds[0].VS_VAL1 }, { KEY: "VS_DETAIL_CURRENCY2", VALUE: ds[1].VS_VAL2 } ]; // 테스트 자식보고서 window.top.fnCustomReportOpen("REP01129117F9624529B667413081703571", false, false, params); }); } };코드 블럭 title 부모창 ServerScript 예시 linenumbers true collapse true /** ************************************ * SERVER - SCRIPT * ************************************ **/ var req = Matrix.getRequest(); /* request */ var res = Matrix.getResponse(); /* response */ var session = Matrix.getSession(); /* session */ var util = Matrix.getUtility(); /* utility */ var val1 = req.getParam("VS_VAL1"); var val2 = req.getParam("VS_VAL2"); try{ var writer = res.getJsonResponseWriter(); writer.beginArray(); writer.beginObject(); writer.addProperty("VS_VAL1", util.getBase64EncodingString(val1)); writer.endObject(); writer.beginObject(); writer.addProperty("VS_VAL2", util.getBase64EncodingString(val2)); writer.endObject(); writer.endArray(); writer.close(); }catch(e){ Matrix.ThrowException("Server Script Error:" + e.message); }View file name G1956_Sender.mtsz height 250 View file name G1956_Reciever.mtsz height 250