Spring MVC 定義主題

2018-07-26 14:25 更新

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

使用的是ResourceBundleThemeSource時(shí),一個(gè)主題可以定義在一個(gè)簡(jiǎn)單的配置文件中。該配置文件會(huì)列出所有組成了該主題的資源。下面是個(gè)例子:

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

屬性的鍵(key)是主題元素在視圖代碼中被引用的名字。對(duì)于JSP視圖來說,一般通過spring:theme這個(gè)定制化的標(biāo)簽(tag)來做,它與spring:message標(biāo)簽很相似。以下的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>

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


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)