Furthermore, now that i understand more about this, i tried again my original version:
cResponse.getHeaderResponse().renderCSSReference(new ResourceReference(MyPage.class, "style.css", getLocale(), getStyle())); and it also works as expected. Perhaps i was not expecting it to work because the generated HTML referenced a file i didn't have, or who knows why. Thanks again. German It seems that German Morales wrote: > Hi again, > > With your solution, the generated HTML now looks this way: > > <link rel="stylesheet" type="text/css" > href="resources/path.to.mypage.MyPage/style_mystyle_mylocale.css" /> > > i don't have style_mystyle_mylocale.css, but only style_mystyle.css > > But it works! > > So it seems that wicket later (when the browser asks for the css) makes > the corresponding look up. > > Thanks a lot! > > German > > PS: just for the record (if someone reads this later), there was a easy > typo in the code below. It should be Application.get() and not > Application.bind(). > > It seems that Johan Compagner wrote: >> no as i said before >> you have to create the resourcereference with the locale and the style. >> Those are not automatically picked up from the session. If you don't >> give >> them in the constructor >> then both are just null >> >> What you could do is this: >> >> ResourceReference reference = new ResourceReference(MyPage.class, >> "style.css", >> locale,style); >> reference.bind(Application.bind()); >> cResponse.getHeaderResponse().renderCSSReference(reference); >> johan >> >> >> >> On Nov 9, 2007 1:55 PM, German Morales <[EMAIL PROTECTED]> >> wrote: >> >>> version 1.3.0-beta4. >>> >>> I insist that the problem must be something different, perhaps in the >>> way >>> i pretend it to work. I know about the ResourceStreamLocator, and as i >>> tell it works perfectly for the HTML. The difference is that from my >>> class >>> the framework looks automatically for the corresponding HTML, but how >>> should it work for the CSS? >>> >>> Should i declare it in the code? >>> >>> // on renderHead >>> cResponse.getHeaderResponse().renderCSSReference(new >>> ResourceReference(MyPage.class, "style.css")); >>> >>> or how? >>> >>> What i'm doing is very simple... i'm forcing (for testing) a call to >>> Session.setStyle("whatever"), then i have MyPage.html and >>> MyPage_whatever.html (which works fine) and then style.css and >>> style_whatever.css (which i expect to be used thanks to the code >>> above). >>> >>> But when i see the generated html, it comes with the content of >>> MyPage_whatever.html, but the header is generated this way: >>> >>> <link rel="stylesheet" type="text/css" >>> href="resources/path.to.mypage.MyPage/style.css" /> >>> >>> that is, not pointint to style_whatever.css as i expect. >>> >>> Thanks for the support, >>> >>> German >>> >>> >>> It seems that Johan Compagner wrote: >>> > it should fallback just fine.. >>> > what version of wicket are you using? >>> > >>> > Because in the ResourceStreamLocator we do now this: >>> > >>> > public IResourceStream locate(final Class clazz, String path, final >>> String >>> > style, >>> > final Locale locale, final String extension) >>> > { >>> > // Try the various combinations of style, locale and extension to >>> find >>> > // the resource. >>> > ResourceNameIterator iter = new ResourceNameIterator(path, style, >>> > locale, >>> > extension); >>> > while (iter.hasNext()) >>> > { >>> > String newPath = (String)iter.next(); >>> > IResourceStream stream = locate(clazz, newPath); >>> > if (stream != null) >>> > { >>> > stream.setLocale(iter.getLocale()); >>> > return stream; >>> > } >>> > } >>> > return null; >>> > } >>> > >>> > johan >>> > >>> > >>> > >>> > On Nov 9, 2007 1:11 PM, German Morales <[EMAIL PROTECTED]> >>> > wrote: >>> > >>> >> Hi again, >>> >> >>> >> Also, the problem is not giving the parameters to the >>> >> ResourceReferences, >>> >> if i call the full constructor then the ResourceReference works, but >>> the >>> >> problem is that it does not make a look up to see what's available, >>> it >>> >> just goes for the full thing. So, if i call the constructor with the >>> >> session locale and style, what it does is search for the file >>> >> style_mystyle_mylocale.css. This is not my intention, what i want it >>> >> that >>> >> that the framework searches for the style_mystyle_mylocale.css, then >>> if >>> >> not found fall back to style_mystyle.css, style_mylocale.css, >>> style.css >>> >> and so on (i'm not sure of the exact order of look up). So, >>> modifying >>> >> the >>> >> constructor or passing the full parameters is not the solution, i >>> think. >>> >> >>> >> >>> >> Regards, >>> >> >>> >> German >>> >> >>> >> It seems that Johan Compagner wrote: >>> >> > if you are creating your own ResourceReferences then you have to >>> give >>> >> the >>> >> > style and locale to them >>> >> > We could enhance the constructors that it does >>> >> Session.get().getLocale() >>> >> > and >>> >> > Session.get().getStyle() >>> >> > if you dont give them.. >>> >> > >>> >> > johan >>> >> > >>> >> > >>> >> > >>> >> > On Nov 9, 2007 10:27 AM, German Morales >>> <[EMAIL PROTECTED]> >>> >> > wrote: >>> >> > >>> >> >> Hi, >>> >> >> >>> >> >> I was thinking (as a last hope) that if this works for the HTMLs, >>> i >>> >> >> could >>> >> >> provide different HTMLs that point internally to different CSSs, >>> and >>> >> it >>> >> >> should work. But that would be duplicating the HTML just to have >>> the >>> >> CSS >>> >> >> changed, and then it's not a good idea. >>> >> >> >>> >> >> Perhaps someone can tell me an official way to have localized and >>> >> styled >>> >> >> CSSs, the wicket way? >>> >> >> >>> >> >> Thanks again, >>> >> >> >>> >> >> German >>> >> >> >>> >> >> It seems that German Morales wrote: >>> >> >> > Hi, >>> >> >> > >>> >> >> > I use it inside a page. >>> >> >> > >>> >> >> > I've tried... >>> >> >> > >>> >> >> > // inside the page constructor >>> >> >> > add(HeaderContributor.forCss(new >>> ResourceReference(MyPage.class >>> , >>> >> >> > "style.css"))); >>> >> >> > >>> >> >> > and >>> >> >> > >>> >> >> > // inside renderHead >>> >> >> > cResponse.getHeaderResponse().renderCSSReference(new >>> >> >> > ResourceReference(MyPage.class, "style.css")); >>> >> >> > >>> >> >> > >>> >> >> > And I don't want to set the style and locale explicitely. What >>> i >>> >> want >>> >> >> is >>> >> >> > to deliver the application to a customer, and, if he wants, he >>> adds >>> >> >> the >>> >> >> > customized page for a locale or style by itself (he could set >>> the >>> >> >> style >>> >> >> > with a parameter or whatever). And as far as i understand the >>> >> wicket >>> >> >> > approach, that's how it should work automatically. In fact it >>> works >>> >> >> > perfecly when i do it for the html of the same page. The >>> difference >>> >> is >>> >> >> > that the html is handled in other way (the framework does it) >>> and >>> >> when >>> >> >> i >>> >> >> > try to do it for the CSS of the page i do it (and it doesn't >>> work). >>> >> So >>> >> >> > there must be something i'm not doing properly. >>> >> >> > >>> >> >> > Or, how should be the way to provide styled CSSs, there is >>> another >>> >> >> > aproach? >>> >> >> > >>> >> >> > thanks and bye, >>> >> >> > >>> >> >> > German >>> >> >> > >>> >> >> > It seems that Eelco Hillenius wrote: >>> >> >> >>> The problem is that the file is there... just that it doesn't >>> >> seem >>> >> >> to >>> >> >> >>> be >>> >> >> >>> looking for it. >>> >> >> >>> >>> >> >> >>> If i force the full constructor: >>> >> >> >>> >>> >> >> >>> new ResourceReference(MyPage.class, "style.css", getLocale(), >>> >> >> >>> getStyle()) >>> >> >> >>> >>> >> >> >>> all works, so the file is correcly found and the name is >>> correct. >>> >> >> >>> >>> >> >> >>> The problem is when i don't set the locale and style >>> explicitely >>> >> (as >>> >> >> it >>> >> >> >>> is >>> >> >> >>> supposed to be done): >>> >> >> >>> >>> >> >> >>> new ResourceReference(MyPage.class, "style.css") >>> >> >> >>> >>> >> >> >>> then it doesn't find the file. Actually i think it doesn't >>> even >>> >> try >>> >> >> to >>> >> >> >>> find it, since as i mention i put a breakpoint in >>> >> >> >>> ResourceReference#setStyle() and nobody is calling it. So >>> later >>> >> >> >>> internal >>> >> >> >>> code to load the resource uses style and locale with null >>> values. >>> >> >> >> >>> >> >> >> How do you use the resource reference? I think the class was >>> >> designed >>> >> >> >> in such a way that the components that use it (Image for >>> instance) >>> >> >> are >>> >> >> >> responsible for setting the appropriate locale/ style 'just in >>> >> time', >>> >> >> >> so that switching locales etc works. >>> >> >> >> >>> >> >> >> Eelco >>> >> >> >> >>> >> >> >> >>> >> --------------------------------------------------------------------- >>> >> >> >> To unsubscribe, e-mail: [EMAIL PROTECTED] >>> >> >> >> For additional commands, e-mail: [EMAIL PROTECTED] >>> >> >> >> >>> >> >> >> >>> >> >> > >>> >> >> > >>> >> >> > >>> >> >> > >>> --------------------------------------------------------------------- >>> >> >> > To unsubscribe, e-mail: [EMAIL PROTECTED] >>> >> >> > For additional commands, e-mail: [EMAIL PROTECTED] >>> >> >> > >>> >> >> > >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> --------------------------------------------------------------------- >>> >> >> To unsubscribe, e-mail: [EMAIL PROTECTED] >>> >> >> For additional commands, e-mail: [EMAIL PROTECTED] >>> >> >> >>> >> >> >>> >> > >>> >> >>> >> >>> >> >>> >> --------------------------------------------------------------------- >>> >> To unsubscribe, e-mail: [EMAIL PROTECTED] >>> >> For additional commands, e-mail: [EMAIL PROTECTED] >>> >> >>> >> >>> > >>> >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>> For additional commands, e-mail: [EMAIL PROTECTED] >>> >>> >> > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]