1 2 Previous Next 25 Replies Latest reply: Feb 23, 2010 3:11 AM by Stefan Tausendpfund Go to original post RSS
  • 15. Re: Can't get rich:fileUpload to work (using 2.0.0.A)
    Wesley Hales Master

    Thanks again for troubleshooting this. So are you saying if I set the allowFlash attribute to true, that it will work in both Firefox and IE?

    also I just deployed a snapshot here:

    http://snapshots.jboss.org/maven2/org/jboss/portletbridge/portletbridge-impl/

  • 16. Re: Can't get rich:fileUpload to work (using 2.0.0.A)
    Wesley Hales Master

    Also, does the issue have anything to do with this?

    https://jira.jboss.org/jira/browse/RF-7190

  • 17. Re: Can't get rich:fileUpload to work (using 2.0.0.A)
    Stefan Tausendpfund Novice

    Hello Wesley,

     

    the upload always works using firefox and opera.

     

    On IE8 fileupload does not work with javascript enabled (tested with IE7/ IE8 compatibility and IE8). I have deployed a sample application on hxxp://80.190.140.117:8080/portal/portal/default/RichFacesEchoPortlet

    where you also can see the XML response in a4j:log.In the response the javax.faces.ViewState is included but the javascript method findViewState does not find this input element in XML response and so the transfer error is printed out in IE8. Here the according lines in fileUpload.js:

     

     onlload: function() {
                    if (this.isError()) {
                            this.callback(FileUploadEntry.UPLOAD_TRANSFER_ERROR);
                            return;
                    }
                    var iframeDocument = this.iframe.contentWindow.document;
                    var elt = iframeDocument.getElementById('_richfaces_file_upload_stopped');
                    var restr = iframeDocument.getElementById('_richfaces_file_upload_size_restricted');
                    var forb = iframeDocument.getElementById('_richfaces_file_upload_forbidden');
                    var state = this.findViewState(iframeDocument); // <- this method does not find the ViewState in response
                    
                    if (elt) {
                            this.callback(FileUploadEntry.UPLOAD_CANCELED);
                    } else if (restr) {
                            this.callback(FileUploadEntry.UPLOAD_SIZE_ERROR);
                    } else if (forb) {
                            this.callback(FileUploadEntry.UPLOAD_SIZE_ERROR);
                    } else if (state) { // <- state is null so the upload_success message is not shown
                            this.viewStateUpdater(state.value);
                            this.callback(FileUploadEntry.UPLOAD_SUCCESS);
                    } else {
                            this.callback(FileUploadEntry.UPLOAD_TRANSFER_ERROR);
                    }
            },
            
            findViewState: function(d) {
                    var s = 'javax.faces.ViewState';
                    var input = d.getElementsByTagName("input");
                    for (var i in input) {
                            if (input[i].name == s) {
                                    return input[i];
                            }
                    }
                    return d.getElementById(s);
            },
    

     

     

    Here the according XML response from aj4:log:

    debug[10:47:17,031]: Full response content: 
    <?xml version="1.0"?><html 
    xmlns="http://www.w3.org/1999/xhtml"><head><title></title></head><body><div 
    id="jbpns_2fdefault_2fRichFacesEchoPortlet_2fRichFacesEchoPortletWindowsnpbj"><meta 
    name="Ajax-Update-Ids" content="" /><span 
    id="ajax-view-state"><input type="hidden" name="javax.faces.ViewState" 
    id="javax.faces.ViewState" 
    value="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" 
    autocomplete="off" /></span><meta id="Ajax-Response" 
    name="Ajax-Response" content="true" /><span 
    id="_ajax:data"><![CDATA[ 34162 
    ]]></span></div></body></html>
    

     

     

     

    If useFlash is enabled fileupload also works with IE8 on localhost and on this sample host. But we also have a solaris machine where the upload button is disabled. This behavior is also mentioned in the JIRA task RF-7190. So this need some further investigation.

     

     

    regards

      Stefan

  • 18. Re: Can't get rich:fileUpload to work (using 2.0.0.A)
    Stefan Tausendpfund Novice

    Hello,

     

    useflash=true and ssl enabled seems not to work with IE8. In firefox you need to add the ssl exception and the upload works fine. In IE8 you can accept the certificate but the add button only renders in disabled mode.

     

    regards

      Stefan

  • 19. Re: Can't get rich:fileUpload to work (using 2.0.0.A)
    Stefan Tausendpfund Novice

    Hello Wesley,

     

    in ui.pack.js I added a LOG debug to F.body.innerHTML. I deployed the same app as portlet and as web app and tested it with IE8.

    Using the web app uploading with IE works fine and the content of F.body.innerHTML is a clean XML:

    debug[16:43:27,921]: CONTENT of Body: <META name=Ajax-Update-Ids content=""><SPAN 
    id=ajax-view-state><INPUT id=javax.faces.ViewState value=j_id1 type=hidden 
    name=javax.faces.ViewState autocomplete="off"></SPAN><META 
    id=Ajax-Response name=Ajax-Response content=true><META 
    name=Ajax-Update-Ids content=""><SPAN id=ajax-view-state><INPUT 
    id=javax.faces.ViewState value=j_id1 type=hidden name=javax.faces.ViewState 
    autocomplete="off"></SPAN><META id=Ajax-Response name=Ajax-Response 
    content=true>
    

     

    The same app in portlet environment shows up that the content in F.body.innerHTML is encoded in IE8:

    debug[16:33:54,281]: CONTENT of Body: 
    <DIV class=e><SPAN class=b> </SPAN> <SPAN 
    class=m>&lt;?</SPAN><SPAN class=pi>xml version="1.0" 
    </SPAN><SPAN class=m>?&gt;</SPAN> </DIV><DIV 
    class=e><DIV style="TEXT-INDENT: -2em; MARGIN-LEFT: 1em" class=c><A 
    class=b onfocus=h() onclick="return false" href="#">-</A> <SPAN 
    class=m>&lt;</SPAN><SPAN class=t>html</SPAN><SPAN 
    class=ns> xmlns</SPAN><SPAN class=m>="</SPAN><B 
    class=ns>http://www.w3.org/1999/xhtml</B><SPAN 
    class=m>"</SPAN><SPAN class=m>&gt;</SPAN></DIV>
    <DIV><DIV class=e><DIV style="TEXT-INDENT: -2em; MARGIN-LEFT: 
    1em" class=c><A class=b onfocus=h() onclick="return false" 
    href="#">-</A> <SPAN class=m>&lt;</SPAN><SPAN 
    class=t>head</SPAN><SPAN 
    class=m>&gt;</SPAN></DIV><DIV><DIV class=e>
    <DIV style="TEXT-INDENT: -2em; MARGIN-LEFT: 1em"><SPAN 
    class=b> </SPAN> <SPAN 
    class=m>&lt;</SPAN><SPAN class=t>title</SPAN> <SPAN 
    class=m>/&gt;</SPAN> </DIV></DIV><DIV><SPAN 
    class=b> </SPAN> <SPAN
    ....
    

     

    So the JS fails to find the javax.faces.ViewState entry and print out the transfer error.

     

    Do you have any idea why the reponse is encoded in the iframe on IE8 within the portlet?

     

    regards

       Stefan

  • 20. Re: Can't get rich:fileUpload to work (using 2.0.0.A)
    Wesley Hales Master
    We are working on setting up an IE8 test environment, Alex or myself will look into this for next release. It is strange to see the encoding difference between the 2 browsers. Thanks again for looking into this.
  • 21. Re: Can't get rich:fileUpload to work (using 2.0.0.A)
    Prabhat Jha Master
    We are currently expanding coverage of bridge testing and will include these kinds of testing as well.
  • 22. Re: Can't get rich:fileUpload to work (using 2.0.0.A)
    Stefan Tausendpfund Novice

    Hello Wesley,

     

    finally I had some time to continue the research for the strange behaviour in IE. The IE seems to have a problem when response is of type "text/xml" and therefore encodes the xml in html. So the upload component can not find the ViewState entry and creates a "Transfer Error". A normal RF web app returns a "text/html" content-type for the multipart request.

    A small patch in setupRenderParams in RichfacesStrategy fixes this issue:

    --- core/portletbridge-impl/src/main/java/org/jboss/portletbridge/richfaces/RichFacesStrategy.java      (revision 569)
    +++ core/portletbridge-impl/src/main/java/org/jboss/portletbridge/richfaces/RichFacesStrategy.java      (working copy)
    @@ -196,10 +196,13 @@
                    if(ajaxContext.isAjaxRequest(facesContext)){
                            // Set XML response.
                            Object response = facesContext.getExternalContext().getResponse();
    -                       if (response instanceof MimeResponse) {
    -                   MimeResponse mimeResponse = (MimeResponse) response;
    -                   mimeResponse.setContentType(XML_CONTENT);
    -            }
    +                       Object request = facesContext.getExternalContext().getRequest();
    +                       if(!(request instanceof ResourceRequest && isMultipartContent((ResourceRequest) request))){
    +                               if (response instanceof MimeResponse) {
    +                                       MimeResponse mimeResponse = (MimeResponse) response;
    +                                       mimeResponse.setContentType(XML_CONTENT);
    +                               }
    +                       }
                    }
            }
    

     

     

    regards

      Stefan

  • 24. Re: Can't get rich:fileUpload to work (using 2.0.0.A)
    Wesley Hales Master
    remove the "https" for the url and use http
  • 25. Re: Can't get rich:fileUpload to work (using 2.0.0.A)
    Stefan Tausendpfund Novice

    Hello Wesley,

     

    Thanks a lot - it works like a charm!

1 2 Previous Next