I currently work on a web application based on Spring 3.1.0.M1, annotations based, and I have a problem with resolving property placeholders in one specific place of my application.

Here is the story.

1) In my web application context (loaded by DispatcherServlet), i have

Code:
	<!-- Handles HTTP GET requests for /resources/version/**  -->
	<resources mapping="/${app.resources.path}/**" location="/static/" cache-period="31556926"/> 

	...

	<!-- Web properties -->
	<context:property-placeholder location="
		classpath:app.properties
		"/>
2) Inside app.properties, there are 2 properties, among others:

Code:
# Properties provided (filtered) by Maven itself
app.version: 0.1-SNAPSHOT
...

# Static resources mapping
app.resources.path: resources/${app.version}
3) I have a JSP custom tag <app:resource value="/images/test.png"> in my JSP 2.1 templates. This tag is responsible for full resource path construction depending on environment settings, app version, spring theme selection etc. Custom tag class extends <spring:url> implementation class, so it may be considered a usual url tag but with some additional knowledge about proper path.

My problem is that I cannot get ${app.resources.path} correctly resolved in my JSP custom tag implementation. JSP custom tags are managed by servlet container, not Spring, and therefore dont participate in DI. So I cannot just use usual @Value("${app.resources.path}") and get it resolved by Spring automatically.

All I have there is the web application context instance, so I have to resolve my property programmatically.

So far I tried:

Code:
// returns null
PropertyResolver resolver = getRequestContext().getWebApplicationContext().getBean(PropertyResolver.class);
resolver.getProperty("app.resources.path");


// returns null, its the same web context instance (as expected)
PropertyResolver resolver2 = WebApplicationContextUtils.getRequiredWebApplicationContext(pageContext.getServletContext()).getBean(PropertyResolver.class);
resolver2.getProperty("app.resources.path");


// throws NPE, resolver3 is null as StringValueResolver is not bound
StringValueResolver resolver3 = getRequestContext().getWebApplicationContext().getBean(StringValueResolver.class);
resolver3.resolveStringValue("app.resources.path");


// null, since context: property-placeholder does not register itself as PropertySource
Environment env = getRequestContext().getWebApplicationContext().getEnvironment();
env.getProperty("app.resources.path");
So now I'm kinda stuck with that. I know that the ability to resolve my placeholder is somewhere in the context, I just don't know the correct way to do it.
Any help or ideas to check are highly appreciated.