Hi,

Putting your static resources in the context root and letting Wicket manage
them is not a problem.
For example you can use a special/custom MyScope.class as a scope for
JS/Css ResourceReferences and a custom IResourceFinder that uses
ServletContext#getResource() when the scope is MyScope.class.

The problem with images in .css files is that they are processed by browser
directly. I.e. they are "invisible" to Wicket. The CSS is streamed to the
browser and the browser resolves the relative url to absolute one and makes
a new request for the image.

One way to make it working is to use a custom ICssCompressor that receives
the raw .css as an input, parses for url(...) and replaces it with the url
produced by urlFor(new PackageResourceReference(MyScope.class, "
the.original.image.name")).

Another way is to use Less/SCSS/SASS as a pre-processor. I have did this
with Less in the past: Less4j provides
https://github.com/SomMeri/less4j/blob/master/src/main/java/com/github/sommeri/less4j/LessFunction.java.
With it you can replace some content in the Less file during compilation.
This approach works only with runtime compilation!


Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Fri, Jan 30, 2015 at 3:21 PM, Nick Pratt <nbpr...@gmail.com> wrote:

> is it possible to have Wicket manage resources (.css and .js) outside of
> the classpath, so that we can leverage all the great dev/prod things that
> Wicket does with resources served from within the classpath?
>
> We typically put our resources at the root of the context:
> /assets/css
> /assets/js
> /assets/images
> /WEB-INF/....
>
> This way we can reference images from within our style sheets using
> 'background:url(../images/logo.png);'
> If Wicket were to serve these resources (I guess we would have to move the
> assets down a level so they were brought in to the accessible classpath of
> the Wicket app), can we manage such context sensitive references within CSS
> files that are being managed by Wicket?
>
> We're using 6.x
>
> N
>

Reply via email to