简体   繁体   中英

How to access Java system properties from Freemarker templates?

I started using Freemarker for assembling simple HTML pages, using FMPP Maven plugin . So far so good. But one thing I need to do is to include value of a system property (one of system properties Maven provides) on a page. Is there a way to access system properties from Freemarker templates? (if not, I may just have to hack plugin to allow passing values from Maven)

cf https://community.jivesoftware.com/thread/14820

You can access it like this :

${statics['java.lang.System'].getProperty("my.property")}

cf documentation here : http://freemarker.sourceforge.net/docs/pgui_misc_beanwrapper.html

FMPP has a setting called data that specifies the variables that all templates will see, so that's where you should put the system properties. To put values into there, unless the value can be specified as a simple literal, you need a so called data-loader. So in this case you need a data-loader that returns the system properties as a java.util.Properties object. While there's no data-loader specifically for that, you can use the eval data-loader like this (in your config.fmpp ):

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

Now in your templates you can access the system properties like sysProps["os.name"] .

Alternatively, you could write a custom FMPP data-loader. See http://fmpp.sourceforge.net/dataloader.html#sect19 .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM