Justin is of course completely correct. When you submit a form to the server, you are getting a response back. That response could be in a number of forms, but there's no such thing as creating a second response on the server and sending back both.
If you want to avoid client-side scripting (which is how soemthing like this would typically be done) what you can do is return your form page simply with a link to the file to download. This link would in fact be a call to your server-side process that will "push" the file through THAT response. Be sure to set the content-disposition headers on the response and you'll get a Save As dialog on the client WITHOUT overwriting what's in their browser. As an alternative to the link, call a Javascript function on the pages' onLoad() event that does the same thing as clicking the link would. Or, if you really don't want to use the scripting, do it with a meta redirect (or refresh, I forget off-hand) to do the same thing. The pertinent point is that the content-disposition header will result in the Save-As dialog rather than overwriting what's on the browser already. -- Frank W. Zammetti Founder and Chief Software Architect Omnytex Technologies http://www.omnytex.com On Mon, November 1, 2004 3:17 pm, Luc Foisy said: > I know there is only a single response, thats why I want to create a new > one :) > > I don't even want to get into opening other windows nor do I want to rely > on javascript for required operation. > > I am not sure what you are refering to as atypical or robustness... > > How do other sites generate files on the fly (take it out of a database, > or a report just run), on form submit, and send them down the line and not > run into this problem? > > I see many people posting many places on the net that they are using the > response to send a file, a lot of them are getting this IllegalState, but > I never really found a followup solution that really fit my needs. > > Why would the possibility exist to push a file through the response if it > leaves you with the ability to go nowhere after? > > (not really questions possed to you Justin, just hoping to keep it alive) > > -----Original Message----- > From: Justin Ruthenbeck [mailto:[EMAIL PROTECTED] > Sent: Monday, November 01, 2004 2:56 PM > To: Tomcat Users List > Subject: Re: Response and file downloads > > > > Luc, > > At 11:42 AM 11/1/2004, you wrote: >>I am having a wee problem with using the response. >> >>I have a form on a page, with a submit button to download a file. That >>file is being pulled from a database and pushed to the response. >>The problem I am having, I just used that response to submit the page, >>so I am getting and IllegalStateException, even though it is still >>pushing the file to the browswer >>I also want to be able to send a redirect after the file is downloaded >>(so I can refresh the page so the form submit page is regenerated, since >>we are using a string to determine unique submits are only coming from >>the pages we generated, and not the browser address bar) >> >>Can we get a new response from the session variable (the one available >>to jsp writing) to send the file, then get another new response to >>perform a redirect.... >>Basically I want to be able to do something like >> >>the form submits, and passes to the applications perform methods through >>the jsp catching the submit >>response = new Response >>response.sendFile >>response = new Response >>response.sendRedirect >>(yes I know those are not actual methods and classes, just trying to >>explain what I want) > > Your understanding of how, exactly, the http protocol works is > incorrect. Because it is a (single) request, (single) response protocol, > what you're asking for cannot be done. > > It seems like what you want is for a user to fill out a form, click > submit, then be presented with a new, fresh, form again ... with the file > download on the side. If you have determined that you absolutely want > this behavior (it's atypical, so doing it won't be particularly robust), > consider programmatically opening another browser window on form submit > from which the download will happen ... and reload your form in your > "main" browser window. This will, of course, subject you to any > headaches associated with javascipt window opening. > > justin > > > > ______________________________________________ > Justin Ruthenbeck > Lead Software Engineer, NextEngine Inc. > justinr - AT - nextengine DOT com > Confidential. See: > http://www.nextengine.com/confidentiality.php > ______________________________________________ > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > >
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
