[jboss-user] [JBoss Seam] - Question about request/response lifecycle

buddy1974 do-not-reply at jboss.com
Tue Jan 30 04:53:36 EST 2007


Hi All,

I have stumbled upon this article: http://today.java.net/pub/a/today/2006/02/09/file-uploads-with-ajax-and-jsf.html and I am trying to get this work with seam. The ProgressBar Component does not work. I think I know why, but I am not sure.

I noticed that the Author wrote inside his FileUploadRenderer Component

        if(parameterMap.containsKey(PROGRESS_REQUEST_PARAM_NAME))
  |         {
  |             // This is a request to get the progress on the file request.
  |             // Get the progress and render it as XML
  | 
  |             HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
  | 
  |             // set the header information for the response
  |             response.setContentType("text/xml");
  |             response.setHeader("Cache-Control", "no-cache");
  | 
  |             try
  |             {
  |                 ResponseWriter writer = FacesUtils.setupResponseWriter(context);
  |                 writer.startElement("progress", input);
  |                 writer.startElement("percentage", input);
  |                 // writer.writeText(result, null);
  |                 // Get the current progress percentage from the session (as set
  |                 // by the filter).
  |                 Double progressCount = (Double) extContext.getSessionMap().get(
  |                                 "FileUpload.Progress." + input.getClientId(context));
  | 
  |                 if(progressCount != null)
  |                 {
  |                     writer.writeText(progressCount, null);
  |                 }
  |                 else
  |                 {
  |                     // We havn't received the upload yet.
  |                     writer.writeText("1", null);
  |                 }
  | 
  |                 writer.endElement("percentage");
  |                 writer.startElement("clientId", input);
  |                 writer.writeText(input.getClientId(context), null);
  |                 writer.endElement("clientId");
  |                 writer.endElement("progress");
  | 
  |             }
  |             catch (Exception e)
  |             {
  |                 // Do some sot of error logging...
  |                 throw new RuntimeException(e);
  |             }
  | 
  |         }
  |         else
  |         {
  |             // Normal decoding request.
  |             if(requestMap.get(clientId).toString().equals("file"))
  |             {
  |                 try
  |                 {
  |                     HttpServletRequest request = (HttpServletRequest) extContext.getRequest();
  |                     FileItem fileData = (FileItem) request.getAttribute(clientId);
  |                     if(fileData != null)
  |                         input.setSubmittedValue(fileData);
  | 
  |                     // Now we need to clear any progress associated with this
  |                     // item.
  |                     extContext.getSessionMap()
  |                                     .put("FileUpload.Progress." + input.getClientId(context), new Double(100));
  | 
  |                 }
  |                 catch (Exception e)
  |                 {
  |                     throw new RuntimeException(
  |                                     "Could not handle file upload - please ensure that you have correctly configured the filter.",
  |                                     e);
  |                 }
  |             }
  |         }
  |     }
  | 

It seems as if the author is trying to itercept the response sent back to the client, by sending a response.setContentType("text/xml");. Is this really possible? 

I rather think, that this has to go inside a PhaseListener, and output the XML from there, or am I wrong?

Any Help is highly appreciated

Kind regards 

Juergen

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4008202#4008202

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4008202



More information about the jboss-user mailing list