Johan Compagner wrote:
Isnt the getResourceKey() returning exactly the name? It should because else the first call to shared resources with just the name doesnt make much sense! Those should be the same.
Well I tried using the name first and it kept complaining that it couldn't find the resource, so I just tried this ResourceReference thing not expecting it to work but it did. I added a log line to the application.init() and it says:
mounted resource: name=cvs_nl.pdf key=org.apache.wicket.Application/cvs_nl.pdf
Thus the name and key are *not* the same, and mounting by name did not work.
Also doesnt ResourceLink uses LocalizedImageResource? That one takes care of that. But i guess it needs a resource per locale also in the shared resources. So that the shared resource key is there for all the locales.
In my web page with the resource link I do the following:fragment.add(new ResourceLink("cvEnglishLink", new ResourceReference("cvs_en.pdf")) {
@Override
public boolean isVisible() {
return "en".equals(getLocale().getLanguage());
}
});
It's a bit of a dirty hack, but it works. As you can see, I make a
ResourceLink with a ResourceReference. I don't even know *how* to make
the referenced resource different for two locales. The names of the
resource are just "cvs_" + language + ".pdf". I don't see that
ResourceLink uses LocalizedImageResource anywhere. There is this
somewhat cryptic comment though in ResourceLink:
protected final CharSequence getURL()
{
if (resourceReference != null)
{
// TODO post 1.2: should we have support for locale
changes when the
// resource reference (or resource??) is set manually..
// We should get a new resource reference for the
current locale
// then
// that points to the same resource but with another
locale if it
// exists.
// something like
//
SharedResource.getResourceReferenceForLocale(resourceReference);
resourceReference.bind(getApplication());
return getRequestCycle().urlFor(resourceReference,
resourceParameters);
}
return urlFor(IResourceListener.INTERFACE);
}
It seems that I need to register a resource with the same name for
different locales? But can I still mount them on different paths then?
And obviously, what the comment alludes to would need to be implemented
of course. :-)
So what I would want to do is mount the English resource on "/downloads/cvs_en.pdf", the Dutch resource on "/downloads/cvs_nl.pdf" and have a resource link on my page which links to the proper one depending on the locale.
Regards, Sebastiaan
On 2/24/08, Sebastiaan van Erk <[EMAIL PROTECTED]> wrote:Hi, I register some DynamicWebResources in my Application's init method, as well as mount them (in a loop, a different one for every locale): getSharedResources().add(name, resource); mountSharedResource("/downloads/" + name, new ResourceReference(name).getSharedResourceKey()); I was wondering if there was another way to get the shared resource key without having to construct a throwaway resource reference. Futherhmore, in a web page I want to link to the shared resources, i.e, I thought of using a ResourceLink. However, I was wondering how I can make sure that the resource being linked to is the correct (localized) resource. (They're generated PDF's, one in English, one in Dutch, and I want the link to point to the correct one depending on the locale). My currentsolution is just to have 2 links and override isVisible() on each of them to check the locale, but I don't know if that's the "correct" way to go about it. Regards, Sebastiaan--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
smime.p7s
Description: S/MIME Cryptographic Signature
