Why do you need the contents of the JSP? I'd consider a Servlet Filter instead if you need to process the output before it's returned to the browser.
Nils-H On Tue, Mar 10, 2009 at 7:29 AM, D1vy@@Ind1@ <divya.rajendran...@gmail.com> wrote: > > Hmm.. I am not sure if the code is problematic because with the same code I > am able to read the contents of all JSP pages. Only for JSPs using struts > tags I get an exception as mentioned previously, I wanted to know how can I > get rid of that exception. > > -D > > > mgainty wrote: >> >> >> the input stream comes from Request >> the output stream comes from Response response.getOutputStream(); >> http://java.sun.com/javaee/5/docs/api/javax/servlet/ServletResponse.html#getOutputStream() >> >> this code is problematic as it is NOT associated with output stream from >> HttpServletResponse response >> >>> baos = new ByteArrayOutputStream(); >>> pw = new PrintWriter(baos); >> >> Martin >> ______________________________________________ >> Disclaimer and confidentiality note >> Everything in this e-mail and any attachments relates to the official >> business of Sender. This transmission is of a confidential nature and >> Sender does not endorse distribution to any party other than intended >> recipient. Sender does not necessarily endorse content contained within >> this transmission. >> >> >> >> >>> Date: Fri, 6 Mar 2009 05:32:21 -0800 >>> From: divya.rajendran...@gmail.com >>> To: user@struts.apache.org >>> Subject: Get jsp content in struts action >>> >>> >>> Hello, >>> >>> I have a JSP with struts tags in it. I want to get its contents from the >>> struts action class. I did it using RequestDispatcher. >>> >>> I wrote the following code .. >>> >>> ====== >>> // Creates a response wrapper object. >>> BufferedHttpResponseWrapper responseWrapper = new >>> BufferedHttpResponseWrapper(response); >>> >>> // Creates a requestDispatcher object. >>> ServletContext sc = request.getSession().getServletContext(); >>> String url = >>> response.encodeRedirectURL("/web/jsp/osf/ShowStaffingForm.jsp"); >>> RequestDispatcher dispatcher = sc.getRequestDispatcher(url); >>> try { >>> dispatcher.include(request,responseWrapper); >>> } catch (Exception e) { >>> e.printStackTrace(); >>> } >>> try { >>> String result = new String(responseWrapper.getOutput()); >>> System.out.println("Result :: "+result); >>> } catch (Exception e) { >>> System.out.println("Exception occurring here..."); >>> e.printStackTrace(); >>> } >>> >>> //This is the reponse wrapper class. >>> /* >>> * BufferedHttpResponseWrapper class >>> * * >>> */ >>> public class BufferedHttpResponseWrapper extends >>> HttpServletResponseWrapper >>> { >>> >>> PrintWriter pw = null; >>> ByteArrayOutputStream baos = null; >>> >>> public BufferedHttpResponseWrapper(HttpServletResponse >>> response) { >>> >>> super(response); >>> baos = new ByteArrayOutputStream(); >>> pw = new PrintWriter(baos); >>> } >>> >>> public PrintWriter getWriter() throws IOException { >>> return pw; >>> } >>> >>> public String getOutput() { >>> pw.flush(); >>> pw.close(); >>> return baos.toString(); >>> } >>> >>> } >>> >>> >>> I get the jsp content in my log files, but I get an exception on the >>> browser >>> when I call this action. >>> Please note that when the JSP has simple HTML tags i get the content with >>> _no_ exception. Even when the JSP contains some custom tags which I >>> developed , then also there is no exception I get the content. The >>> problem >>> is only when there is Struts tags in the JSP, though I get the content, I >>> get the exception on the browser. >>> >>> The following is the exception: >>> >>> ========================================================== >>> >>> type Exception report >>> >>> message >>> >>> description The server encountered an internal error () that prevented it >>> from fulfilling this request. >>> >>> exception >>> >>> javax.servlet.ServletException: Stream closed >>> >>> org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515) >>> >>> org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419) >>> >>> org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:99) >>> jcifs.http.NtlmHttpFilter.doFilter(NtlmHttpFilter.java:147) >>> >>> root cause >>> >>> java.io.IOException: Stream closed >>> >>> org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:203) >>> >>> org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:113) >>> org.apache.jasper.runtime.JspWriterImpl.flush(JspWriterImpl.java:171) >>> >>> org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:954) >>> >>> org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:601) >>> >>> org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:119) >>> >>> org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:178) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:348) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253) >>> >>> com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221) >>> >>> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) >>> >>> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) >>> >>> com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150) >>> >>> org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48) >>> >>> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) >>> >>> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) >>> >>> com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) >>> >>> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) >>> >>> com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:186) >>> >>> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) >>> >>> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) >>> >>> com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) >>> >>> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) >>> >>> org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:83) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) >>> >>> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) >>> >>> org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:207) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) >>> >>> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) >>> >>> com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:74) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) >>> >>> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) >>> >>> com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:127) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) >>> >>> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) >>> >>> org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:107) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) >>> >>> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) >>> >>> org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:206) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) >>> >>> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) >>> >>> com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:115) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) >>> >>> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) >>> >>> com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:143) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) >>> >>> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) >>> >>> com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:121) >>> >>> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) >>> >>> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) >>> >>> org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:170) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) >>> >>> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) >>> >>> com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:123) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) >>> >>> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) >>> >>> com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) >>> >>> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) >>> >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) >>> >>> org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50) >>> >>> org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:504) >>> >>> org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419) >>> >>> org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:99) >>> jcifs.http.NtlmHttpFilter.doFilter(NtlmHttpFilter.java:147) >>> >>> ========================================================================= >>> >>> >>> Could any one please help me with this. >>> >>> Thanks >>> -D >>> -- >>> View this message in context: >>> http://www.nabble.com/Get-jsp-content-in-struts-action-tp22372538p22372538.html >>> Sent from the Struts - User mailing list archive at Nabble.com. >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org >>> For additional commands, e-mail: user-h...@struts.apache.org >>> >> >> _________________________________________________________________ >> Hotmail® is up to 70% faster. Now good news travels really fast. >> http://windowslive.com/online/hotmail?ocid=TXT_TAGLM_WL_HM_70faster_032009 >> > > -- > View this message in context: > http://www.nabble.com/Get-jsp-content-in-struts-action-tp22372538p22428755.html > Sent from the Struts - User mailing list archive at Nabble.com. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-unsubscr...@struts.apache.org > For additional commands, e-mail: user-h...@struts.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org