It appears to and that is my understanding. The examples show it as a
way to include images that are built from an action.
I tried to punt and stream the result by directly accessing a the
response.getOutputStream() in the JSP and get the error:
java.io.IOException: Stream closed
at
org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:20
4)
at
org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:1
15)
at
org.apache.jasper.runtime.JspWriterImpl.flush(JspWriterImpl.java:173)
at
org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.ja
va:956)
at
org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:6
09)
at
org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletD
ispatcherResult.java:119)
at
org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSu
pport.java:178)
at
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultAct
ionInvocation.java:348)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:253)
at
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java
:50)
at
org.apache.struts2.components.ActionComponent.executeAction(ActionCompon
ent.java:255)
at
org.apache.struts2.components.ActionComponent.end(ActionComponent.java:1
55)
at
org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSu
pport.java:43)
at
org.apache.jsp.jsps.catalog.AjaxContractInfo_jsp._jspx_meth_s_005faction
_005f0(AjaxContractInfo_jsp.java:413)
I then punted again and tried to stream from the action method by
accessing the outputSteam and returning null so that it would not
forward to a result and got the error:
java.lang.IllegalStateException: getWriter() has already been called for
this response
at
org.apache.catalina.connector.Response.getOutputStream(Response.java:573
)
at
org.apache.catalina.connector.ResponseFacade.getOutputStream(ResponseFac
ade.java:183)
at
com.premierinc.sca.catalog.actions.ContractDetail.streamNote(ContractDet
ail.java:201)
-----Original Message-----
From: Dave Newton [mailto:[EMAIL PROTECTED]
Sent: Wednesday, May 21, 2008 2:52 PM
To: Struts Users Mailing List
Subject: RE: Re: [S2] Advice on Handling CLOBs in Struts2
Does the <s:action...> take make an actual request?
I guess I assumed it executed the action without making a full request,
which could cause the error you're seeing, as the response would already
have been written to by the time your stream result got ahold of it.
Dave
--- "Hoying, Ken" <[EMAIL PROTECTED]> wrote:
> BTW.. I have tested the stream action by calling it directly by
> placing the url to action in the address window of my browser and it
> works perfectly then.
>
>
> -----Original Message-----
> From: news [mailto:[EMAIL PROTECTED] On Behalf Of Laurie Harper
> Sent: Wednesday, May 21, 2008 2:09 PM
> To: [email protected]
> Subject: Re: [S2] Advice on Handling CLOBs in Struts2
>
> Since that's not a normal result of using a stream result, I have to
> assume you are doing something wrong. Without seeing the relevant
> code/configuration, though, we can't offer much help.
>
> L.
>
> Hoying, Ken wrote:
> > I have tried to accomplish this by creating an action with a stream
>
> > result type.
> >
> > I am then including calling the action from with in my JSP page
> using
> > the <s:action> tag.
> >
> > Unfortunately though, I am getting the following error:
> >
> > [2008-05-21 11:26:25,702] [http-0.0.0.0-8080-2] [ERROR] []
> > [ts2.components.ActionComponent]: Could not execute action:
> > /catalog/ContractDetailsNote
> > java.lang.IllegalStateException: getWriter() has already been
> called
> > for this response
> > at
> >
>
org.apache.catalina.connector.Response.getOutputStream(Response.java:5
> > 73
> > )
> > at
> >
>
org.apache.catalina.connector.ResponseFacade.getOutputStream(ResponseF
> > ac
> > ade.java:183)
> > at
> >
>
org.apache.struts2.dispatcher.StreamResult.doExecute(StreamResult.java
> > :2
> > 19)
> > at
> >
>
org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResult
> > Su
> > pport.java:178)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultA
> > ct
> > ionInvocation.java:348)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:253)
> > at
> >
>
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.ja
> > va
> > :50)
> > at
> >
>
org.apache.struts2.components.ActionComponent.executeAction(ActionComp
> > on
> > ent.java:255)
> > at
> >
>
org.apache.struts2.components.ActionComponent.end(ActionComponent.java
> > :1
> > 55)
> > at
> >
>
org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTag
> > Su
> > pport.java:43)
> > at
> >
>
org.apache.jsp.jsps.catalog.AjaxContractInfo_jsp._jspx_meth_s_005facti
> > on
> > _005f0(AjaxContractInfo_jsp.java:413)
> > at
> >
>
org.apache.jsp.jsps.catalog.AjaxContractInfo_jsp._jspx_meth_s_005fiter
> > at
> > or_005f0(AjaxContractInfo_jsp.java:297)
> > at
> >
>
org.apache.jsp.jsps.catalog.AjaxContractInfo_jsp._jspx_meth_s_005fsort
> > _0
> > 05f0(AjaxContractInfo_jsp.java:247)
> > at
> >
>
org.apache.jsp.jsps.catalog.AjaxContractInfo_jsp._jspx_meth_s_005felse
> > _0
> > 05f0(AjaxContractInfo_jsp.java:200)
> > at
> >
>
org.apache.jsp.jsps.catalog.AjaxContractInfo_jsp._jspService(AjaxContr
> > ac
> > tInfo_jsp.java:99)
> > at
> > org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> > at
> >
>
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.
> > ja
> > va:373)
> > at
> >
>
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336)
> > at
> > org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> > at
> >
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appli
> > ca
> > tionFilterChain.java:290)
> > at
> >
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFi
> > lt
> > erChain.java:206)
> > at
> >
>
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispa
> > tc
> > her.java:654)
> > at
> >
>
org.apache.catalina.core.ApplicationDispatcher.processRequest(Applicat
> > io
> > nDispatcher.java:445)
> > at
> >
>
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDi
> > sp
> > atcher.java:379)
> > at
> >
>
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDisp
> > at
> > cher.java:292)
> > at
> >
>
org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(Servle
> > tD
> > ispatcherResult.java:139)
> > at
> >
>
org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResult
> > Su
> > pport.java:178)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultA
> > ct
> > ionInvocation.java:348)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:253)
> > at
> >
>
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doInter
> > ce
> > pt(DefaultWorkflowInterceptor.java:221)
> > at
> >
>
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(
> > Me
> > thodFilterInterceptor.java:86)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> > at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> > at
> >
>
com.opensymphony.xwork2.interceptor.TimerInterceptor.invokeUnderTiming
> > (T
> > imerInterceptor.java:125)
> > at
> >
>
com.opensymphony.xwork2.interceptor.TimerInterceptor.intercept(TimerIn
> > te
> > rceptor.java:112)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> > at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> > at
> >
>
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(Va
> > li
> > dationInterceptor.java:150)
> > at
> >
>
org.apache.struts2.interceptor.validation.AnnotationValidationIntercep
> > to
> > r.doIntercept(AnnotationValidationInterceptor.java:48)
> > at
> >
>
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(
> > Me
> > thodFilterInterceptor.java:86)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> > at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> > at
> >
>
com.opensymphony.xwork2.interceptor.TimerInterceptor.invokeUnderTiming
> > (T
> > imerInterceptor.java:125)
> > at
> >
>
com.opensymphony.xwork2.interceptor.TimerInterceptor.intercept(TimerIn
> > te
> > rceptor.java:112)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> > at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> > at
> >
>
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.interce
> > pt
> > (ConversionErrorInterceptor.java:123)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> > at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> > at
> >
>
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(
> > Pa
> > rametersInterceptor.java:167)
> > at
> >
>
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(
> > Me
> > thodFilterInterceptor.java:86)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> > at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> > at
> >
>
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.interc
> > ep
> > t(StaticParametersInterceptor.java:105)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> > at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> > at
> >
>
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxI
> > nt
> > erceptor.java:83)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> > at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> > at
> >
>
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(Chai
> > ni
> > ngInterceptor.java:115)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> > at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> > at
> >
>
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInte
> > rc
> > eptor.java:143)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> > at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> > at
> >
>
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(Pre
> > pa
> > reInterceptor.java:121)
> > at
> >
>
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(
> > Me
> > thodFilterInterceptor.java:86)
> > at
> >
>
com.premierinc.sca.interceptor.ScaPrepareInterceptor.intercept(ScaPrep
> > ar
> > eInterceptor.java:42)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> > at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> > at
> >
>
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(Serv
> > le
> > tConfigInterceptor.java:170)
> > at
> >
>
com.premierinc.sca.interceptor.ServletConfigEnhancedInterceptor.interc
> > ep
> > t(ServletConfigEnhancedInterceptor.java:73)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> > at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> > at
> >
>
com.premierinc.sca.interceptor.UserInterceptor.intercept(UserIntercept
> > or
> > ..java:129)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> > at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> > at
> >
>
com.premierinc.sca.interceptor.HibernateSessionInterceptor$FilterChain
> > In
> > voker.doFilter(HibernateSessionInterceptor.java:145)
> > at
> >
>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doF
> > il
> > terInternal(OpenSessionInViewFilter.java:198)
> > at
> >
>
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRe
> > qu
> > estFilter.java:75)
> > at
> >
>
com.premierinc.sca.interceptor.HibernateSessionInterceptor.intercept(H
> > ib
> > ernateSessionInterceptor.java:75)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> > at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> > at
> >
>
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.interc
> > ep
> > t(ExceptionMappingInterceptor.java:176)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> > at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> > at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> > at
> >
>
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.ja
> > va
> > :50)
> > at
> >
>
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java
> > :5
> > 04)
> > at
> >
>
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatch
> > er
> > ..java:419)
> > at
> >
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appli
> > ca
> > tionFilterChain.java:235)
> > at
> >
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFi
> > lt
> > erChain.java:206)
> > at
> >
>
org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionCont
> > ex
> > tCleanUp.java:99)
> > at
> >
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appli
> > ca
> > tionFilterChain.java:235)
> > at
> >
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFi
> > lt
> > erChain.java:206)
> > at
> >
>
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFil
> > te
> > r.java:96)
> > at
> >
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appli
> > ca
> > tionFilterChain.java:235)
> > at
> >
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFi
> > lt
> > erChain.java:206)
> > at
> >
>
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperVa
> > lv
> > e.java:230)
> > at
> >
>
org.apache.catalina.core.StandardContextValve.invoke(StandardContextVa
> > lv
> > e.java:175)
> > at
> >
>
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(Security
> > As
> > sociationValve.java:179)
> > at
> >
>
org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authenticat
> > or
> > Base.java:432)
> > at
> >
>
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve
> > .j
> > ava:84)
> > at
> >
>
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.ja
> > va
> > :127)
> > at
> >
>
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.ja
> > va
> > :102)
> > at
> >
>
org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedCo
> > nn
> > ectionValve.java:157)
> > at
> >
>
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
> > java:109)
> > at
> >
>
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java
> > :2
> > 62)
> > at
> >
>
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
> > 84
> > 4)
> > at
> >
>
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proces
> > s(
> > Http11Protocol.java:583)
> > at
> >
>
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
> > at java.lang.Thread.run(Thread.java:595)
> >
> >
> > -----Original Message-----
> > From: Hoying, Ken [mailto:[EMAIL PROTECTED]
> > Sent: Wednesday, May 21, 2008 9:42 AM
> > To: [email protected]
> > Subject: [S2] Advice on Handling CLOBs in Struts2
> >
> > Generally when working with Struts2, we have been loading a domaon
> > object from the database in our action and then sending then
> > referencing the properties as needed from the JSP to generate our
> output.
> >
> > However, we now what could potentially be a large amount of data
> > stored in a CLOB. Using the method that we have been using to
> date,
> > we would have to place the entire CLOB in a string in the action
> and
> > then access it from the JSP. Obviously, we would like to avoid
> doing
> that.
> >
> > I was wondering if anyone else had come across this and how they
> had
> > managed to solve it. How do we stream the content of the CLOB?
> >
> > Thank you!
> > Ken
>
>
> ---------------------------------------------------------------------
> 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]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]