[jsr-314-open-mirror] [jsr-314-open] outputStylesheet generates URLs that can't load url(...) in CSS
Ed Burns
edward.burns at oracle.com
Tue Sep 14 13:21:06 EDT 2010
EB> I have already specified this in 2.1
Just checked. I hadn't committed it. Now I have. [1]
EB> The solution is to note that #{} el expressions are evaluated on the way
EB> out when a CSS stylesheet is served up.
EB> Therefore, in the url() syntax you can say something like this:
EB>
EB> @import url(#{resource['this:layout.css']});
EB> @import url(#{resource['this:typography.css']});
EB> @import url(#{resource['this:colorAndMedia.css']});
EB>
EB> Where "this" is a special keyword that means "the current library".
>>>>> On Tue, 14 Sep 2010 08:44:55 +0700, Cay Horstmann <cay.horstmann at gmail.com> said:
CH> Ed, the hardship with your proposed solution is that the CSS has to be
CH> edited. That's not something that people will always want to do.
CH> Like I said, when the tag is called h:outputStylesheet, there is a
CH> reasonable expectation that you can serve up a style sheet.
CH> In my current project, for example, the style sheet is automagically
CH> generated by some theme engine whatsit, and I don't want to touch it
CH> because I don't begin to understand it :-)
CH> My remedy was to use
CH> <link type="text/css" rel="stylesheet"
CH> href="#{request.contextPath}/skins/cupertino/skin.css"/>
CH> It works for me because I can include that in a template, and there is
CH> no relocation problem. But it's not going to work for everyone--after
CH> all, that's why h:outputStylesheet was invented in the first place.
CH> I think this deserves a more serious solution, either by changing the
CH> URLs for resource retrieval, or by rewriting url(,,,) when serving up
CH> the CSS.
I think we can specify that url expressions in CSS files whose value is
*not* an EL expression are automatically rewritten to be equivalent to
using the "this" syntax.
For example the url() expression here
CH> .ui-icon { width: 16px; height: 16px; background-image: url(myicon.png); }
would be served up as if it were written like:
.ui-icon { width: 16px; height: 16px; background-image: url(#{resource['this:myicon.png']}); }
Is that ok? If so, Cay, can you *please* file an issue in the
spec-public issue tracker? JavaOne is consuming all my time and that
would really help.
CH> NB. There is also the unpleasant issue of the resource localization
CH> that I keep kvetching about. Is a fix for that in the works?
That's [2], and I had planned it for 2.1, but I don't have enough time.
If someone wants to help, I'd welcome it.
Ed
[1] https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=444
[2] https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=548
--
| edward.burns at oracle.com | office: +1 407 458 0017
| homepage: | http://ridingthecrest.com/
| 4 work days until handoff of JSF 2.1 change log to jcp
| 3 work days until JavaOne 2010
| 38 work days until DOAG 2010
| 42 work days until JSF 2.1 Milestone 6
More information about the jsr-314-open-mirror
mailing list