Wes Wannemacher wrote: > > > On Mon, 2008-03-10 at 14:59 -0700, Dave Newton wrote: >> --- "Kelly.Graus" <[EMAIL PROTECTED]> wrote: >> > Is it possible to specify more than one SUCCESS result for an action? >> For >> > example, when the user runs an action, it could prompt them to download >> a >> > file (using the stream result type), and then redirect them to another >> > page? >> >> Names should be unique to a single result, otherwise there'd be no (easy) >> way >> to distinguish them. Depending on how you actually want the above >> scenario to >> work there are probably a few other options. >> >> Dave > > > Probably the most common practice would be to have your "success" result > contain a meta-refresh that redirects to the action which will spit out > your file (by stream result). If the file download requires some > precondition to be met, then you'll probably have to set a flag in the > user's session, since the meta-refresh will generate a whole new > request. The advantage of this scenario is that your user will not end > up looking at a blank page, or his/her previously filled out form (and > potentially submitting more than once). > > -Wes > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > Hi Wes,
I tried implementing this using a meta-refresh. It kind of worked, but it had some problems. I'm simplifying the solution I came up with so I can concentrate on getting the file downloading part working. If you have any hints on this, I would appreciate it. Currently I have a jsp page that creates links to a DownloadLesson action, and passes in a couple of parameters that describe what needs to be downloaded. The DownloadLesson action looks like this: <action name="DownloadLesson" class="net.toltech.lessondownloader.webapp.action.DownloadLessonAction"> <result type="stream"> application/octet-stream ${contentDisposition} ${contentLength} </result> </action> Here are the important parts of the DownloadLessonAction: public class DownloadLessonAction extends ActionSupport implements SessionAware, ServletContextAware { public String execute() { //Look up the lesson in the current download key. DownloadKey downloadKey = (DownloadKey)getSession().get( "downloadKey" ); if( downloadKey != null ) { //Get the lesson using the lesson identifier and version. Lesson lesson = downloadKey.getLesson( getLessonIdentifier(), new Version( getVersion() ) ); if( lesson != null ) { this.lesson = lesson; return SUCCESS; } } return ERROR; } public java.io.InputStream getInputStream() { if( lesson != null ) { java.io.InputStream inputStream = servletContext.getResourceAsStream( lesson.getFilePath() ); try { length = inputStream.available(); } catch( java.io.IOException e ) {} return inputStream; } return null; } public String getContentDisposition() { String filename = lesson.getFilePath().substring( lesson.getFilePath().lastIndexOf( "/" ) + 1 ); return "attachement;filename=" + filename; } public String getContentLength() { return new Integer( length ).toString(); } The above is kind of working. I click on the download link, and the Save dialog pops up, giving me the option to Open or Save the file. As soon as I select the Save button, 4 exceptions get thrown. The first is java.net.SocketException: Connection reset by peer: socket write error. The other 3 are java.net.SocketException: Software caused connection abort: socket write error. However, the file does get downloaded, so I'm wondering if I'm getting these exceptions because I have debugging turned on. So I guess my question is, am I doing anything incorrect in how I'm accessing the file resource, and how I'm returning the InputStream. Once I figure out why I'm getting these exceptions, then I will go back to trying to use the meta refresh to move to a different page. Thanks! Kelly -- View this message in context: http://www.nabble.com/-S2--Multiple-SUCCESS-results--tp15959652p16012550.html Sent from the Struts - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]