2011-06-18 73 views
3

我開始使用Freemarker來組裝簡單的HTML頁面,使用FMPP Maven plugin。到現在爲止還挺好。 但我需要做的一件事就是在頁面中包含系統屬性的值(Maven提供的系統屬性之一)。有沒有辦法從Freemarker模板訪問系統屬性? (如果沒有,我可能只需要破解插件,以便從Maven的傳遞值)如何從Freemarker模板訪問Java系統屬性?

回答

2

FMPP有一個setting called data,它指定了所有模板將會看到的變量,所以這就是您應該放置系統屬性的地方。要將值放入那裏,除非可以將值指定爲簡單文字,否則您需要一個所謂的數據加載器。因此,在這種情況下,您需要一個數據加載器,將系統屬性作爲java.util.Properties對象返回。雖然具體有沒有數據加載器對於這一點,你可以使用eval數據加載器像這樣(在你的config.fmpp):

data: { 
    ... 
    sysProps: eval('System.getProperties()') 
    ... 
} 

現在在你的模板,您可以訪問諸如sysProps["os.name"]系統屬性。

或者,你可以寫一個自定義的FMPP數據加載器。見http://fmpp.sourceforge.net/dataloader.html#sect19

+0

是的,這是一種魅力。 – StaxMan