...
- 원인
- 매트릭스 표준 보고서 변수 전달 규약은 Base64.encode로 전달 및 decode를 기준으로 합니다.
- Base64.encode되지 않은 값이 자식창에서 base64.encode된 문자열로 오인하여 decode 시도하여 한글이 깨지는 현상이 발생합니다.
해결 방법
- 부모창에서 파라메터 전달 시 Base64.encode 후 전달하는 방법코드 블럭 title 부모창 JScript 예시 linenumbers true collapse true var val1 = "123"; // 정상 var val2 = "1234"; // 깨짐 var pop_w = screen.width * 0.9; var pop_h = screen.height * 0.9; var leftPosition =10; var topPosition = 10; var reportCode = "REP59C5D334B29344CBA0957608DFEA9867"; // Param_Reciever보고서 /************************************** * 버튼 컨트롤이 클릭되는 시점에 발생합니다. * * arguments : * string Id (Readonly:False) : 컨트롤이름 * string Text (Readonly:False) : 라벨 값 **************************************/ var OnButtonClick = function(sender, args){ if(args.Id == "ButtonBTN_SEND_01"){ 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(reportCode, false, false, params); }); } else if(args.Id == "BTN_SEND_02"){ 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); }); ]; var url = "https://rnd.bimatrix.co.kr/aud7/portal/popupView.jsp?btn=false&id="+reportCode + "&VS_DETAIL_CURRENCY1=" + ds[0].VS_VAL1 + "&VS_DETAIL_CURRENCY2=" + ds[1].VS_VAL2; var opts = "toolbar=no,scrollbars=no,resizable=yes,top="+topPosition+",left="+leftPosition+",width="+pop_w+",height="+pop_h; // 테스트 자식보고서 window.open(url,"",opts); }); } };
코드 블럭 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 Param_Sender.mtsz height 250 View file name Param_Reciever.mtsz height 250 해당 가이드의 샘플 보고서
> 부모보고서 : https://rnd.bimatrix.co.kr/aud7/extention/portal/SimpleSSO_Con.jsp?reportCode=REP3A7CE366EF0D4E229B4E027B3B2388DD
> 자식보고서 : https://rnd.bimatrix.co.kr/aud7/extention/portal/SimpleSSO_Con.jsp?reportCode=REP59C5D334B29344CBA0957608DFEA9867