Spring MVC 定義主題

2018-07-26 14:25 更新

要在你的應(yīng)用中使用主題,你必須實現(xiàn)一個org.springframework.ui.context.ThemeSource接口。WebApplicationContext接口繼承了ThemeSource接口,但主要的工作它還是委托給接口具體的實現(xiàn)來完成。默認的實現(xiàn)是org.springframework.ui.context.support.ResourceBundleThemeSource,它會從classpath的根路徑下去加載配置文件。如果需要定制ThemeSource的實現(xiàn),或要配置ResourceBundleThemeSource的基本前綴名(base name prefix),你可以在應(yīng)用上下文(application context)下注冊一個名字為保留名themeSource的bean,web應(yīng)用的上下文會自動檢測名字為themeSource的bean并使用它。

使用的是ResourceBundleThemeSource時,一個主題可以定義在一個簡單的配置文件中。該配置文件會列出所有組成了該主題的資源。下面是個例子:

    styleSheet=/themes/cool/style.css
    background=/themes/cool/img/coolBg.jpg

屬性的鍵(key)是主題元素在視圖代碼中被引用的名字。對于JSP視圖來說,一般通過spring:theme這個定制化的標簽(tag)來做,它與spring:message標簽很相似。以下的JSP代碼即使用了上段代碼片段中定義的主題,用以定制整體的皮膚:

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<html>
    <head>
        <link rel="stylesheet" href="<spring:theme code=''styleSheet''/>" type="text/css"/>
    </head>
    <body style="background=<spring:theme code=''background''/>">
        ...
    </body>
</html>

默認情況下ResourceBundleThemeSource使用的基本名前綴(base name prefix)是空值。也即是說,配置文件是從根classpath路徑下加載的。因此,你需要把主題的定義文件cool.properties放在classpath的根路徑目錄下,比如,/WEB-INF/classes。ResourceBundleThemeSource采用了Java的標準資源bundle加載機制,完全支持國際化主題。比如,你可以創(chuàng)建一個/WEB-INF/classes/cool_nl.properties配置文件,并在其中引用一副有荷蘭文的背景圖片。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號