22.컴포넌트

22.1스크립트

22.1.1replaceAll

간단설명

런타임 버전에서는 replace처리를 할때 all 처리를 할수 있도록 되어 있지만 
html5 버전에서는 javascript를 표준으로 따르기 때문에 javascript에서 replace 동작은 한번만 처리를 하기 때문에 replaceAll 과 같이 모든 항목에 적용이 되지 않습니다.

상세설명

정규식을 이용하여 처리를 할 수 있습니다.

var strText = "!!테스트1!!테스트2!!테스트3!!테스트4";
 var v_ret = null;
 var v_regExp = new RegExp("!!", "g");
 v_ret = strText.replace(v_regExp, String.fromCharCode(13) + String.fromCharCode(10));  
 trace(v_ret);

22.1.2HTML5를 띄운 브라우저 체크방법

HTML5에서 현재 HTML5를 띄운 브라우저 체크하는 방법입니다.

상세설명

현재뜨고있는 브라우저의 종류를 체크하는 방법입니다. 
system.navigatorname 프로퍼티를 이용하여 return을 받으면 XPlatform런타임인 경우에는 "XPlatform"을 리턴하지만 HTML5 상에서는 해당 브라우저를 리턴합니다. 
 
리턴값은 다음과 같습니다.
IE8,9 : IE
FireFox : Geko - Geko가 firefox의 내부 엔진 이름입니다.
Chrom : Chrom
Safari : Webkit
Opera : opera

소스 예)

function Button00_onclick(obj:Button,  e:ClickEventInfo)
{
     alert(system.navigatorname);
}

22.2Form(폼)

22.2.1폼 로드시 컴포넌트의 속성에 expr이 적용되어 있는 경우 해결 방법

원인

HTML5 에서는 컴포넌트의 속성 중 expr에 폼의 함수를 호출 하고 있을 경우 폼로드 시점에 
해당 함수의 리턴값이 반영되지 않습니다. 
이는 HTML5의 컴포넌트 생성시점과 스크립트의 실행 시점이 맞지 않기 때문입니다.

해결방법

구조상 component 가 먼저 올라오고 script 가 나중에 올라오기 때문에 expr 에서 폼의 함수를 
호출하는 경우 해당현상이 발생한답니다.

피해갈 방법은 
폼의 onload에서 아래와 같이 expr 속성을 지정하시면 됩니다.
Calendar00.expr = "expr:fn_Today()";

22.3Combo

22.3.1combo list가 activeX뒤로 숨는 현상(제약사항)

XPLATFORM form의 combo나 calendar를 컴파일 할 경우 div으로 변경이 됩니다.  
즉 web상에서는 div로 동작을 하게 되는데 activeX위로 div가 올라갈수 없습니다. 
해당 사항은 web상에서도 불가능한 기능으로  제약사항입니다.
Combo컴포넌트가 HTML5로 표현시 Div형태로 표현되어 발생하는 문제

22.4Excel

HTML5에서는 엑셀기능을 사용하기 위해 
xplatform9-exportexcel-1.0.jar,  poi-3.2-FINAL-20081019.jar
를 WAS lib에 추가해야 사용이 가능합니다. 

web.xml파일에
<servlet>
<servlet-name>ExportExcel</servlet-name>
<servlet-class>com.tobesoft.xplatform.console.services.exportexcel.ExportExcelServlet</servlet-class>
</servlet> 
<servlet-mapping>
<servlet-name>ExportExcel</servlet-name>
<url-pattern>/services/ExportExcel</url-pattern>
</servlet-mapping>
설정을 추가하는 경우 사용이 가능합니다.

22.4.1그리드의 내용을 엑셀로 Export시 파일명을 한글명으로 지정할 경우 처리 방법입니다

현상

엑셀로 Export시 파일명이 한글인 경우 서버에 인코딩 처리가 되어 있지 않는 경우는 파일명이 깨지게 됩니다.

해결방법

<Connector port="9090" URIEncoding="utf-8" protocol="HTTP/1.1"
connectionTimeout="20000" maxPostSize="3145728"
redirectPort="8443" />
아래와 같이 서버설정 파일에 URIEncoding 설정을 하여 주시면 됩니다.

22.5TextArea

22.5.1TextArea vAlign관련 제약사항

런타임 동작시 TextArea  vAlign같은 경우 top ,middle,center,bottom이 설정 가능 하나 html5에서는 제약 사항입니다. 
html textarea속성중 align 속성만 가능 합니다. 즉 rignt, left만 가능 합니다. vAlign차체가 없는 속성이기 때문에 해당 사항은 제약사항입니다.

22.6Tab/Div

22.6.1IE9에서 Tab안에 grid가 있을 경우 속도 저하 문제

Div형태의 컴포넌트(Div,Tab)의 border를 round 형태로 지정시 속도 저하가 발생을 함 
현재 엔진 구조상 수정이 불가능함 

IE9에서만 속도저하가  발생 되는 이유는 IE8이하에서는 round 처리를 web에서 하지 못하고 무시되고 있지만 IE9에서 기본적으로 round처리를 하고 있어서 속도 저하 문제가 발생을 함
round기능을 제거해야 속도에 문제가 발생하지 않습니다.

해당 내용은 스크롤이 발생하는 컴포넌트의 경우 모두 해당되며, border 사용(round)시 발생합니다.

22.6.2Div, TabPage에 연결된 화면의 refresh 방법

문제

HTML5에서는 
Div00.url = "";
Div00.url = "a::a.xfdl"; 과 같이 하여도 연결되는 폼의 onload 이벤트가 타지 않습니다.

해결방법

더미페이지를 하나 두어 더미페이지로 이동을 하였다가 페이지로 url을 주는 방식으로 구현하여야 합니다.

22.7기타

22.7.1HTML5로 모바일 개발시에 현재 장비기종 확인 하는 방법

HTML5로 모바일 개발시에 현재 장비기종 확인 하는 방법입니다. 
system.mobileproducttype 속성을 이용하여 리턴값을 받으면 현재 모바일 장비의 기종이 나타납니다. 
회사명과 제품명이 아닌 Mobile 기종 코드를 얻어옵니다.

소스 예)

alert(system.mobileproducttype);

22.7.2HTML5에서 파일 업로드시 로컬파일 경로가 fakepath로 나오는 경우의 처리 방법

파일 업로드 컴포넌트를 이용하여 파일을 업로드 할때 로컬파일 경로가 fakepath로 나오는 부분은 
IE보안상의 이유로 인한 제약 사항 입니다. 
이를 소스단에서 제어할 수 있지는 않습니다.

해결방법

1.IE 도구
2.인터넷 옵션 -> 보안 -> 사용자 지정 수준
3.파일을 서버에 업로드할 때 로컬 디렉터리 경로 포함 을 [사용]으로 체크 위와 같이 IE옵션값 조절을 
  해야 경로를 얻을 수 있습니다. 
* fakepath가 나온다 하여도 실제 파일 업로드는 정상적으로 동작이 됩니다.