I use tapestry 5 as my choice of web framework. Tapestry allows me to define symbols in the configure class and inject symbols into other components.
for example,
The 'final' keyword is required to make the compiler emit it as you would do it in Java. E.g.,
object Foo { final val MY_SYMBOLIC_CONSTANT="whatever" }
It seems that, otherwise, you only get an accessor method under the hood which is not statically calculable.