[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