2008년 11월 28일 금요일

javascript message처리

관련글 : Struts2의 properties를 객체에 담고 가공하기

 

Json방식으로 메시지를 넣은 경우 해당 메시지를 load하여 꺼낼 Javascript가 필요 하여 구현함

 

일단 코드!!!

function loadScript(src) {
        var s = document.getElementsByTagName('HEAD')[0].appendChild(document.createElement('script'));
        s.type = 'text/javascript';
        s.charset="utf-8";
        s.src = src;
}       
var src = '메시지 js가 있는 url';
var NrnMessage = function(jsUrl){       
        this.message = null;
        this.js_src = src;
        if(jsUrl)
                this.js_src = jsUrl;
        if(typeof message == 'undefined'){               
                loadScript(this.js_src);                               
        }
        setTimeout('nrnmessage.init()',100);
};
NrnMessage.prototype = {
        init: function(){
                this.message = message;
        },
        getMessage: function(path){
                var idx = path.lastIndexOf('.');
                return this.findIdx(path.substr(0,idx), path.substr(idx,path.length));
        },
        getDirectMessage: function(path){
                return eval('this.message.'+path);
        },
        findIdx: function(path,key){
                var len = eval('this.message.'+path).length;
                for(var i=0; i<len; i++){
                        if(eval('this.message.'+path+'['+i+']'+key))
                                return eval('this.message.'+path+'['+i+']'+key);
                }
                return null;
        }
};

다음은 호출될 message 양식 (관련글에서 유추하듯 properties를 가져오기 때문에 해당 양식을 지키려 했다)

 var message = {
         LOGIN :
                 { VALIDATION : [
                                 {EMPTY_ID:'<s:text name="LOGIN.VALIDATION.EMPTY_ID"/>'},
                                 {ID_SIZE:'<s:text name="LOGIN.VALIDATION.ID_SIZE"/>'},
                                 {EMPTY_PASSWORD:'<s:text name="LOGIN.VALIDATION.EMPTY_PASSWORD"/>'},
                                 {PASSWORD_SIZE:'<s:text name="LOGIN.VALIDATION.PASSWORD_SIZE"/>'}
                         ]
                 }        ,
                
         'TITLE_BUTTON_CLOSE' : '닫기',
         'TITLE$BUTTON$OPEN' : '열기'
 }

호출하는 page에서 객체를 생성하고 사용하는 방법은 아래와 같다.

<script type="text/javascript">

//메시지 호출

 nrnmessage.getMessage('LOGIN.VALIDATION.EMPTY_PASSWORD')
 nrnmessage.getDirectMessage('TITLE_BUTTON_CLOSE')
 nrnmessage.getDirectMessage('TITLE$BUTTON$CLOSE')

</script>

<script type="text/javascript">

nrnmessage = new NrnMessage('/service/main/message_js.nrn'); //생성

</script>

 

 

0 개의 댓글:

댓글 쓰기