我正在用JSP和Java Servlet構建Web應用程序。目前,我正在使用JSTL fmt來使用屬性文件(messages.properties)進行國際化。但是我的客戶希望能夠更新文本,因此我需要將屬性文件中的鍵/值移至數據庫。問題是我不知道如何從數據庫中讀取文本,例如在JSP文件中標記 <fmt:message>
標記。使用JSTL和數據庫中的鍵/值在JSP中進行本地化
任何幫助都非常歡迎,感謝
//莫莫
我正在用JSP和Java Servlet構建Web應用程序。目前,我正在使用JSTL fmt來使用屬性文件(messages.properties)進行國際化。但是我的客戶希望能夠更新文本,因此我需要將屬性文件中的鍵/值移至數據庫。問題是我不知道如何從數據庫中讀取文本,例如在JSP文件中標記 <fmt:message>
標記。使用JSTL和數據庫中的鍵/值在JSP中進行本地化
任何幫助都非常歡迎,感謝
//莫莫
不與fmt
。您要麼寫自己的標籤,要麼更改fmt
的代碼。
是的,我明白,謝謝:-) –
<fmt:message>
可以利用LocalizationContext
,其反過來利用ResourceBundle
。所以,真的,你應該關注如何創建一個滿足你需求的ResourceBundle
。如果你絕對必須使用數據庫,也許有人已經創建了一個ResourceBundle
實現來處理它。確保你調查的一件事是,只要你至少使用Java 6,就是ResourceBundle.Control
。可能會發現您可以繼續使用屬性文件,但可以自定義緩存行爲。
是的,我使用Java 6.使用屬性文件與緩存行爲聽起來像最好的解決方案。我會調查審批。謝謝 –
難道這是一個解決方案?我沒有從數據庫中讀取每個鍵/值對,而是將它們讀入地圖並刷新每個騎士。 Database backed i18n for java web-app
數據庫查詢重量級;如果您的網頁中的每個標題都必須進行查詢,它將會非常緩慢。我建議在需要時重新加載國際化捆綁的機制。 – SJuan76
您是否已經設置了數據庫訪問權限?您可以在數據庫中使用語言環境或語言鍵存儲對象的名稱和描述,並讓您的servlet確定當前的語言環境。 – Pao
感謝您的回答。 @ SJuan76這個解決方案確實會使應用程序非常慢。你有什麼建議如何在需要時重新加載國際化包? –