X-Internet 연동시 메시지 처리하기

From JCFWiKi

Jump to: navigation, search

그림:check.gif

  • 산출물 : 공통모듈 메시지 처리
  • 작성자: 김민아
  • 작성일 : 2007/12/14

목차

[편집] 메시지 처리란

  • 메시지 처리란 화면에서 입력, 저장 등 이벤트가 발생 것에 대한 정보가 화면의 바에 나타나도록 하는 것이다.
  • JCF 공통모듈을 보면 입력, 저장 등 이벤트 발생할 때 마다 화면 하단의 바에 메시지가 나타나는 것을 볼 수 있다.

[편집] 사용 가이드

1. 데이터의 입력 시 메시지를 처리할 것이라면 postAdd 함수안에 메시지 처리함수를 넣는다.

function postAdd ()
	{
	setMessage(" 데이터를 입력합니다..", STATUS);
	}
  • 데이터의 삭제 시 메시지를 처리할 것이라면 postDelete 함수안에 메시지 처리함수를 넣는다.
function postDelete()
	{
	setMessage(" 데이터가 삭제되었습니다.", STATUS);
	}
  • 데이터의 저장 시 메시지를 처리할 것이라면 postSave 함수안에 메시지 처리함수를 넣는다.
function postSave()
	{
	setMessage(" 데이터가 저장되었습니다.", STATUS);
	}
  • 데이터의 조회 시 메시지를 처리할 것이라면 postFind 함수안에 메시지 처리함수를 넣는다.
function postFind()
	{
	setMessage(" 데이터가 조회되었습니다.", STATUS);
	}

그림:forbidden.gif

  • 꼭 함수 이름을 위에와 같이 해야합니다.
  • 그래야만 버튼 클릭 이벤트에서 해당 함수를 호출 할 수 있다.

2, 메시지의 처리가 조회나 저장 시에 일어난다면 tranCallback 메소드 안에서 postFind, postSave 함수를 넣는다.

function trancallback(trid, ErrorCode, ErrorMsg )
{
 
 if( trid == "FIND" )
	{
		if( ErrorCode < 0 )
			alert("조회 실패 : " + ErrorMsg); // 실패시 Messasge처리
		else
			postFind();
 
	}
}

function trancallback(trid, ErrorCode, ErrorMsg )
{
 
 if( trid == "FIND" )
	{
		if( ErrorCode < 0 )
			alert("조회 실패 : " + ErrorMsg); // 실패시 Messasge처리
		else
			postSave();
 
	}
}

  • 메시지 처리 함수(setMessage)의 호출은 시기는 요청하는 이벤트에 따라 다르게하여한다.
    • 서버를 호출하지 않는 메소드 (입력, 삭제): 이벤트가 화면 안에서만 이루어지므로 이벤트가 실행될 때 같이 메시지가 나타나게 하면된다.(공통버튼함수에구현되있음)
    • 서버를 호출하는 메소드 (저장, 조회) : 저장이라면 DB에 까지 제대로 반영이 된 후에, 조회라면 데이터를 다 가져온 후에 메시지가 나타나야 하므로 trancallback에서 호출한다.

[편집] 메시지 처리 구조

  • 버튼들을 공통으로 사용할 하기 때문에 입력이나 저장 버튼이 있는 화면과 실제 이벤트가 발생하는 화면이 같지 않다.
  • 버튼 클릭 이벤트 함수가 div로 가져온 화면(실제 이벤트가 발생되는 화면)의 메소드를 호출하는 형태이다.

[편집] 서버를 호출하지 않을 때(입력, 삭제 함수 일 때)

서버를 호출하지 않을 때의 구조
서버를 호출하지 않을 때의 구조
  • 위의 그림은 입력버튼 클릭 시 발생하는 이벤트이다.

1. MenuFrame.xml 의 btnInsert_OnClick

function btnNew_OnClick(obj)
{
        divDomain.menuAdd();
        divDomain.postAdd();   //해당화면의 postDelete() 함수를 불러옴, 
}
  • 입력버튼을 클릭하면 셀추가하는 함수와 메시징을 처리하는 함수가 동시에 실행된다.
  • 여기서 divDomain는 div에 있는 화면의 Id이다.즉, 실제 이벤트가 일어나는 화면의 Id이다.

[편집] 서버를 호출할 때(저장, 조회 함수 일 때)

서버를 호출할 때의 구조
서버를 호출할 때의 구조
  • 위의 그림은 조회버튼 클릭 시 발생하는 이벤트의 순서이다.

1. MenuFrame.xml 의 btnRead_OnClick

  • 조회 버튼 이벤트가 발생하면 div로 가져온 화면의 조회 함수를 호출한다.
function btnRead_OnClick(obj)
{
        divDomain.menuFind();
}

2. menuFind() 함수

  • Transaction을 통해 서버에 통신하여 데이터를 가져온다.
  • tranCallback메소드를 호출한다.
function menuFind()
{
    Transaction(
        "FIND", //Callback에서 인식하는 svcId 
        "Common::user/findUsers.action",
        "",
        "ds_user=ds_user",
        ,
        "tranCallback" );
}

3. tranCallback 메소드

  • Transaction 이 잘 실행됬는지 확인하고 메시징 처리 함수를 호출한다.
function trancallback(trid, ErrorCode, ErrorMsg )
{
 
 if( trid == "FIND" )
	{
		if( ErrorCode < 0 )
			alert("조회 실패 : " + ErrorMsg); // 실패시 Messasge처리
		else
			postFind();
 
	}
}

[편집] JCF_message.js

function setMessage( errMsg, showType )
{
 
	if ( showType == ALERT ) {
		alert( errMsg );
	} else if ( showType == status ) {
		stMsg.Value = errMsg; 
	} else if ( showType == confirm ) {
		retVal = confirm( errMsg );
		return retVal; 
	} else {
		stMsg.Value = errMsg;
	}
}
  • JCF_message.js 는 setMessage 에 대한 함수가 있는 js 파일이다.
  • 앞에서 setMessage를 호출할 때 setMessage(" 데이터가 조회되었습니다.", STATUS); 로 호출하였다.
  • 여기서 앞의 값은 errMsg로 받아오고 뒤의 값은 showType로 받아온다.
  • stMsg는 출력되는 메시지 바의 Id이다.