Hi,

I've juste faced the exact same issue, your fix works for me if I remove the 
condition ERXAjaxApplication.isAjaxReplacement(context.request()).
I had to also modify the javascript function AOD.loadCss to create a <link 
href=...> in the head section :

loadCSS: function(css) {
        var link=document.createElement("link");
        link.setAttribute("rel", "stylesheet");
        link.setAttribute("type", "text/css");
        link.setAttribute("href", css);
        if (typeof link!="undefined") {
            document.getElementsByTagName("head")[0].appendChild(link);
        }
}

The previous code was loading the content of the css file inline into the head 
section (<style type="text/css">....</style>) which was breaking the references 
to images.

I'm also surprised nobody else seems to encounter this problem. I will fill a 
Jira.

Regards,

Alex

Le 24 août 2010 à 10:33, Bogdan Zlatanov a écrit :

> Hi all,
> 
> 
>       Yesterday, I noticed a problem with 
> ERXResponseRewriter.addStyleSheetResourceInHead(WOResponse response, 
> WOContext context, String framework, String fileName, String media) method, 
> while working a project. Details follow with some sample code for 
> illustration:
> 
>       Let's say I have two components, called Main and MyComponent with the 
> following contents:
> 
>       Main.html:
> 
>               <div id="contentContainer">
>                       <webobject name = "MyComponent"/>
>               </div>
> 
>       Main.wod:
> 
>               MyComponent : MyComponent {}
> 
> 
> 
>       MyComponent.html: 
> 
>               <webobject name = "MyAjaxUpdateLink"/>
> 
>       MyComponent.wod:
> 
>               MyAjaxUpdateLink : AjaxUpdateLink {
>                       action = updateStuff;
>                       replaceID = "contentContainer";
>               }
> 
>       MyComponent.java:
> 
>               public WOActionsResult updateStuff() {
>                       // code that updates stuff here
>                       return null;
>               }
> 
>               public void appendToResponse(WOResponse aResponse, WOContext 
> aContext) {
>                       super.appendToResponse(aResponse, aContext);
>                       AjaxUtils.addStyleSheetResourceInHead(aContext, 
> aResponse, "/css/my_component.css");
>               }
> 
> 
>       Given the above, the first time Main page is invoked, the 
> my_component.css file is loaded inline, and everything is fine. But when the 
> update link is clicked, the contents of the "contentContainer" div gets 
> replaced, but the inline CSS declaration is not added again, because 
> ERXResponseRewriter thinks the resource is already added. Looking at the 
> ERXResponseRewriter.java I could see the code commented:
> 
>               // MS: It looks like all the browsers can load CSS inline, so 
> we don't
>               // even need all this.
>               // String fallbackStartTag;
>               // String fallbackEndTag;
>               // if (ERXAjaxApplication.isAjaxRequest(context.request())) {
>               // fallbackStartTag = "<script>AOD.loadCSS('";
>               // fallbackEndTag = "')</script>";
>               // }
>               // else {
>               // fallbackStartTag = null;
>               // fallbackEndTag = null;
>               // }
>               // ERXResponseRewriter.addResourceInHead(response, context, 
> framework,
>               // fileName, cssStartTag, cssEndTag, fallbackStartTag, 
> fallbackEndTag,
>               // TagMissingBehavior.SkipAndWarn);
> 
> 
> Uncommenting it solved my problem, so I modified it a bit:
> 
>               String fallbackStartTag = null;
>               String fallbackEndTag = null;
> 
>               if (ERXAjaxApplication.isAjaxRequest(context.request()) && 
> ERXProperties.booleanForKeyWithDefault("er.extensions.loadOnDemand", true)) {
>                       if 
> (ERXAjaxApplication.isAjaxReplacement(context.request()) && 
> ERXProperties.booleanForKeyWithDefault("er.extensions.loadOnDemandDuringReplace",
>  false)) {
>                               boolean appendTypeAttribute = 
> ERXProperties.booleanForKeyWithDefault("er.extensions.ERXResponseRewriter.javascriptTypeAttribute",
>  false);
>                               fallbackStartTag = (appendTypeAttribute ? 
> "<script type=\"text/javascript\">AOD.loadCSS('" : "<script>AOD.loadCSS('");
>                               fallbackEndTag = "')</script>";
>                       }
>               }
>                
>               ERXResponseRewriter.addResourceInHead(response, context, 
> framework, fileName, cssStartTag, cssEndTag, fallbackStartTag, 
> fallbackEndTag, TagMissingBehavior.Inline);
> 
> while looking at the ERXResponseRewriter.addScriptResourceInHead() method.
> 
> I have no idea if anyone else has ever hit this problem, but it seems to me 
> that the commented code is needed after all. I'll file a bug report in Jira 
> later today.
> 
> 
> Cheers.
> 
> 
> Bogdan Zlatanov,
> Tuparev Technologies Bulgaria Ltd.
> 
> 
> 
> 
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      ([email protected])
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/webobjects-dev/alexis.tual%40gmail.com
> 
> This email sent to [email protected]

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to