Javascript獲取統(tǒng)一管理的提示語(message)
項(xiàng)目開發(fā)中,各個(gè)頁面,各個(gè)業(yè)務(wù)操作都會使用提示語。面對這么多message,更好的方式是統(tǒng)一管理這些消息。這樣在做國際化的時(shí)候進(jìn)行統(tǒng)一處理也變的方便。
推薦方案使用數(shù)據(jù)庫來管理所有提示語,在項(xiàng)目啟動的時(shí)候?qū)⑺刑崾菊Z加載到內(nèi)存或緩存存儲。
對于Java中如何實(shí)現(xiàn),沒有什么可說的,很簡單。那么我們?nèi)绾卧贘avascript中使用我們這些提示語呢,下面進(jìn)行了簡單封裝,思路清晰,使用簡單,供大家參考。
1、創(chuàng)建message.jsp,代碼如下:
<%-- <%@ page import="com.xxx.xxx.xxx.xxx.I18nManager" %> --%>
<%@ page language="java" pageEncoding="UTF-8"%>
function I18nManager() {
this.init;
this.messages;
};
I18nManager.prototype = {
get : function(id, args) {
if (!this.init) {
this.messages = new Array();
// 這里可以使用Java代碼的方法讀取服務(wù)端已經(jīng)緩存好的消息提示語
<%-- this.messages['charset'] = "<%= I18nManager.get(user, "charset") %>"; --%>
<%-- this.messages[''] = "<%= I18nManager.get(user, "") %>"; --%>
<%-- this.messages['M0001'] = "<%= I18nManager.get(user, "M0001") %>"; --%>
<%-- this.messages['M0002'] = "<%= I18nManager.get(user, "M0002") %>"; --%>
<%-- this.messages['M0003'] = "<%= I18nManager.get(user, "M0003") %>"; --%>
<%-- this.messages['M0004'] = "<%= I18nManager.get(user, "M0004") %>"; --%>
<%-- this.messages['M0005'] = "<%= I18nManager.get(user, "M0005") %>"; --%>
<%-- this.messages['M0006'] = "<%= I18nManager.get(user, "M0006") %>"; --%>
<%-- this.messages['ui.title.user'] = "<%= I18nManager.get(user, "ui.title.user") %>"; --%>
<%-- this.messages['ui.title.xview'] = "<%= I18nManager.get(user, "ui.title.xview") %>"; --%>
<%-- this.messages['ui.title.xview.memo'] = "<%= I18nManager.get(user, "ui.title.xview.memo") %>"; --%>
<%-- this.messages['ui.title.xviewPointList'] = "<%= I18nManager.get(user, "ui.title.xviewPointList") %>"; --%>
<%-- this.messages['ui.title.sherpaOracle'] = "<%= I18nManager.get(user, "ui.title.sherpaOracle") %>"; --%>
// 或者可以靜態(tài)設(shè)置一些提示語
this.messages['M0001'] = "操作成功!";
this.messages['M0001'] = "操作失??!";
this.init = true;
}
var message = this.messages[id];
if (!message && message !== "") {
return id;
}
if (args) {
if (typeof args == "object" && args.length) {
for (var i = 0; i < args.length; i++) {
var pattern = new RegExp("\\{" + i + "\\}", "g");
message = message.replace(pattern, args[i]);
}
} else {
message = message.replace(/\{0\}/g, args);
}
}
return message;
},
alert : function(id, args) {
alert(this.get(id, args));
}
};
var i18n = new I18nManager();
代碼中的“操作成功” 和 “操作失敗” 是我靜態(tài)寫死的值。我們在jsp中使用動態(tài)Java代碼讀取服務(wù)端在系統(tǒng)啟動后已經(jīng)全部緩存好的所有消息提示語,并將其動態(tài)輸出設(shè)置到 this.message[‘xxxx'] 中。
2、如何在頁面中使用
window.onload = function(){
i18n.alert('M0001');
//alert(i18n.get('M0001'));
}
可以使用我們定義好的 get 和 alert 方法直接使用,當(dāng)然根據(jù)實(shí)際需要,我們可以擴(kuò)展自己的方法。
相關(guān)文章
echarts柱狀堆疊圖實(shí)現(xiàn)示例(圖例和x軸都是動態(tài)的)
一些柱形圖在數(shù)據(jù)量比較多的時(shí)候,橫向排列受到擠壓,導(dǎo)致柱形圖,變的非常細(xì),影響整體的效果,下面這篇文章主要給大家介紹了關(guān)于echarts柱狀堆疊圖(圖例和x軸都是動態(tài)的)的相關(guān)資料,需要的朋友可以參考下2023-04-04
如何利用JSHint減少JavaScript的錯(cuò)誤
JSHint是一個(gè)社區(qū)驅(qū)動用來檢測JavaScript代碼中錯(cuò)誤和潛在的問題以及執(zhí)行團(tuán)隊(duì)的編碼規(guī)范工具。它非常靈活,因此可以很容易地適應(yīng)您特定的編碼規(guī)則和你的代碼執(zhí)行環(huán)境。JSHint將永遠(yuǎn)保持開源的方式。2016-08-08
JavaScript實(shí)現(xiàn)預(yù)覽本地上傳圖片功能完整示例
這篇文章主要介紹了JavaScript實(shí)現(xiàn)預(yù)覽本地上傳圖片功能,結(jié)合完整實(shí)例形式分析了javascript圖片預(yù)覽相關(guān)的格式正則驗(yàn)證、瀏覽器判斷、頁面元素屬性動態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-03-03
深入學(xué)習(xí)js函數(shù)的隱式參數(shù) arguments 和 this
這篇文章主要介紹了 深入學(xué)習(xí)js函數(shù)的隱式參數(shù) arguments 和 this,arguments是一個(gè)類數(shù)組結(jié)構(gòu),它保存了調(diào)用時(shí)傳遞給函數(shù)的所有實(shí)參;this是函數(shù)執(zhí)行時(shí)的上下文對象, 這個(gè)對象有些讓人感到困惑的行為。 下面分別對他們進(jìn)行討論。,需要的朋友可以參考下2019-06-06
js 發(fā)個(gè)判斷字符串是否為符合標(biāo)準(zhǔn)的函數(shù)
判斷字符是不是ip和是不是數(shù)字的函數(shù)。2009-04-04
微信小程序 如何引入外部字體庫iconfont的圖標(biāo)
這篇文章主要為大家詳細(xì)介紹了微信小程序引入外部字體庫iconfont圖標(biāo)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01

