관련글 : 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 개의 댓글:
댓글 쓰기