oops, sent a little early....

> -----Original Message-----
> From: Vaillancourt, Richard [SMTP:[EMAIL PROTECTED]]
> Sent: Friday, January 11, 2002 4:20 PM
> To:   'Struts Developers List'
> Subject:      template tag question
> 
> 
> 
> I have a template tag where I want to exec a .do...
> 
> Below is the template.jsp, the .jsp it ulitmately wants to include, config
> file specifying action, and stack dump...
> 
> It hits the action perform as expected and returns the correct .jsp string
> on success.
> 
> I receive a  
> 
> A recursive error was detected.
> The server cannot use specified error page. Please check the application
> error-path.
> Original Error: 
> Error Message: ERROR: Cannot forward. Writer or Stream already obtained.
> Error Code: 500
> Target Servlet: null
> Error Stack: 
> 
> any ideas?  thanks in advance
> 
> //////////////////////////               the template
> 
> <%@ taglib uri='/WEB-INF/struts-template.tld' prefix='template' %> 
> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
> <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
> <%@ taglib uri="/WEB-INF/struts-menu.tld" prefix="menu" %>
> 
> <template:insert template='/workflowTemplate.jsp'>
> <template:put name='title' content='Templates - Test' direct='true'/>
> <template:put name='sidebar' content='/setSecurityCode.do' />
> <template:put name='header' content='/workflowHeader.jsp' />
> <template:put name='content' content='/workflowwelcome.jsp'/> 
> 
> </template:insert> 
> 
> 
> ////////////////////////  the workflowSidebarrrr.jsp
> 
> <%@ page language="java" %>
> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
> <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
> <%@ taglib uri="/WEB-INF/struts-menu.tld" prefix="menu" %>
> 
> <table cellpadding=0 cellspacing=0>
> <tr valign=top>
>  <td>
>     <menu:useMenuDisplayer name="Simple"
> bundle="org.apache.struts.action.MESSAGE">
>     <table cellpadding=0 cellspacing=0>
>       <tr>
>         <td>
> 
>                       <logic:equal name="addWorkgroupForm"
> property="userAdmin"
>                                scope="request" value="FALSE">
> 
>                               <menu:displayMenu name="WorkflowAdmin2"/>
>       
>                       </logic:equal>
> 
>                       <logic:equal name="addWorkgroupForm"
> property="userAdmin"
>                                scope="request" value="TRUE">
> 
>                               <menu:displayMenu name="WorkflowAdmin"/>
>       
>                       </logic:equal>
>           
>         </td>
>       </tr>
>     </table>
>     </menu:useMenuDisplayer> 
>  </td>
> </tr>
> </table>
> //////////////////////////////////////  struts config file
> 
> 
> <action    path="/addWorkgroup"
>                  type="workflowadminstruts.AddWorkgroupAction"
>                  name="addWorkgroupForm"
>                  scope="request"
>                  validate="false">
>       <forward name="success"
> path="/workflowwelcome.jsp"/>
>     </action>
> 
> 
> 
> 
> 
> 
> A recursive error was detected.
> The server cannot use specified error page. Please check the application
> error-path.
> Original Error: 
> Error Message: ERROR: Cannot forward. Writer or Stream already obtained.
> Error Code: 500
> Target Servlet: null
> Error Stack: 
> 
> Root Error-1: ERROR: Cannot forward. Writer or Stream already obtained.
> java.lang.IllegalStateException: ERROR: Cannot forward. Writer or Stream
> already obtained. java.lang.Throwable(java.lang.String)
> java.lang.Exceptio(java.lang.String)
> java.lang.RuntimeException(java.lang.String)
> java.lang.IllegalStateException(java.lang.String) void
> com.ibm.servlet.engine.webapp.WebAppRequestDispatcher.forward(javax.servle
> t.
> ServletRequest, javax.servlet.ServletResponse) void
> org.apache.struts.action.ActionServlet.processActionForward(org.apache.str
> ut
> s.action.ActionForward, org.apache.struts.action.ActionMapping,
> org.apache.struts.action.ActionForm,
> javax.servlet.http.HttpServletRequest,
> javax.servlet.http.HttpServletResponse) void
> org.apache.struts.action.ActionServlet.process(javax.servlet.http.HttpServ
> le
> tRequest, javax.servlet.http.HttpServletResponse) void
> org.apache.struts.action.ActionServlet.doGet(javax.servlet.http.HttpServle
> tR
> equest, javax.servlet.http.HttpServletResponse) void
> javax.servlet.http.HttpServlet.service(javax.servlet.http.HttpServletReque
> st
> , javax.servlet.http.HttpServletResponse) void
> javax.servlet.http.HttpServlet.service(javax.servlet.ServletRequest,
> javax.servlet.ServletResponse) void
> com.ibm.servlet.engine.webapp.StrictServletInstance.doService(javax.servle
> t.
> ServletRequest, javax.servlet.ServletResponse) void
> com.ibm.servlet.engine.webapp.StrictLifecycleServlet._service(javax.servle
> t.
> ServletRequest, javax.servlet.ServletResponse) void
> com.ibm.servlet.engine.webapp.IdleServletState.service(com.ibm.servlet.eng
> in
> e.webapp.StrictLifecycleServlet, 
> javax.servlet.ServletRequest, javax.servlet.ServletResponse) void
> com.ibm.servlet.engine.webapp.StrictLifecycleServlet.service(javax.servlet
> .S
> ervletRequest, javax.servlet.ServletResponse) void
> com.ibm.servlet.engine.webapp.ServletInstance.service(javax.servlet.Servle
> tR
> equest, javax.servlet.ServletResponse,
> com.ibm.servlet.engine.webapp.WebAppServletInvocationEvent) void
> com.ibm.servlet.engine.webapp.ValidServletReferenceState.dispatch(com.ibm.
> se
> rvlet.engine.webapp.ServletInstanceReference,
> javax.servlet.ServletRequest,
> javax.servlet.ServletResponse,
> com.ibm.servlet.engine.webapp.WebAppServletInvocationEvent) void
> com.ibm.servlet.engine.webapp.ServletInstanceReference.dispatch(javax.serv
> le
> t.ServletRequest, javax.servlet.ServletResponse,
> com.ibm.servlet.engine.webapp.WebAppServletInvocationEvent) void
> com.ibm.servlet.engine.webapp.WebAppRequestDispatcher.handleWebAppDispatch
> (c
> om.ibm.servlet.engine.webapp.WebAppRequest,
> javax.servlet.http.HttpServletResponse, boolean) void
> com.ibm.servlet.engine.webapp.WebAppRequestDispatcher.dispatch(javax.servl
> et
> .ServletRequest, javax.servlet.ServletResponse, boolean) void
> com.ibm.servlet.engine.webapp.WebAppRequestDispatcher.include(javax.servle
> t.
> ServletRequest, javax.servlet.ServletResponse) void
> org.apache.jasper.runtime.PageContextImpl.include(java.lang.String) int
> org.apache.struts.taglib.template.GetTag.doStartTag() void
> _workflowTemplate_xjsp._jspService(javax.servlet.http.HttpServletRequest,
> javax.servlet.http.HttpServletResponse) void
> org.apache.jasper.runtime.HttpJspBase.service(javax.servlet.http.HttpServl
> et
> Request, javax.servlet.http.HttpServletResponse) void
> javax.servlet.http.HttpServlet.service(javax.servlet.ServletRequest,
> javax.servlet.ServletResponse) void
> org.apache.jasper.runtime.JspServlet$JspServletWrapper.service(javax.servl
> et
> .http.HttpServletRequest, javax.servlet.http.HttpServletResponse, boolean)
> void
> org.apache.jasper.runtime.JspServlet.serviceJspFile(javax.servlet.http.Htt
> pS
> ervletRequest, javax.servlet.http.HttpServletResponse, java.lang.String,
> java.lang.Throwable, boolean) void
> org.apache.jasper.runtime.JspServlet.service(javax.servlet.http.HttpServle
> tR
> equest, javax.servlet.http.HttpServletResponse) void
> javax.servlet.http.HttpServlet.service(javax.servlet.ServletRequest,
> javax.servlet.ServletResponse) void
> com.ibm.servlet.engine.webapp.StrictServletInstance.doService(javax.servle
> t.
> ServletRequest, javax.servlet.ServletResponse) void
> com.ibm.servlet.engine.webapp.StrictLifecycleServlet._service(javax.servle
> t.
> ServletRequest, javax.servlet.ServletResponse) void
> com.ibm.servlet.engine.webapp.ServicingServletState.service(com.ibm.servle
> t.
> engine.webapp.StrictLifecycleServlet, javax.servlet.ServletRequest,
> javax.servlet.ServletResponse) void
> com.ibm.servlet.engine.webapp.StrictLifecycleServlet.service(javax.servlet
> .S
> ervletRequest, javax.servlet.ServletResponse) void
> com.ibm.servlet.engine.webapp.ServletInstance.service(javax.servlet.Servle
> tR
> equest, javax.servlet.ServletResponse,
> com.ibm.servlet.engine.webapp.WebAppServletInvocationEvent) void
> com.ibm.servlet.engine.webapp.ValidServletReferenceState.dispatch(com.ibm.
> se
> rvlet.engine.webapp.ServletInstanceReference,
> javax.servlet.ServletRequest,
> javax.servlet.ServletResponse,
> com.ibm.servlet.engine.webapp.WebAppServletInvocationEvent) void
> com.ibm.servlet.engine.webapp.ServletInstanceReference.dispatch(javax.serv
> le
> t.ServletRequest, javax.servlet.ServletResponse,
> com.ibm.servlet.engine.webapp.WebAppServletInvocationEvent) void
> com.ibm.servlet.engine.webapp.WebAppRequestDispatcher.handleWebAppDispatch
> (c
> om.ibm.servlet.engine.webapp.WebAppRequest,
> javax.servlet.http.HttpServletResponse, boolean) void
> com.ibm.servlet.engine.webapp.WebAppRequestDispatcher.dispatch(javax.servl
> et
> .ServletRequest, javax.servlet.ServletResponse, boolean) void
> com.ibm.servlet.engine.webapp.WebAppRequestDispatcher.include(javax.servle
> t.
> ServletRequest, javax.servlet.ServletResponse) void
> org.apache.jasper.runtime.PageContextImpl.include(java.lang.String) int
> org.apache.struts.taglib.template.InsertTag.doEndTag() 
> 
> 
> 
> 
> > -----Original Message-----
> > From:       Donnie Hale [SMTP:[EMAIL PROTECTED]]
> > Sent:       Thursday, January 10, 2002 11:40 PM
> > To: Struts Developers List
> > Subject:    RE: AspectJ and Struts Exception handling:
> > 
> > I just posted a message to commons about aspectj. :) Very, very cool
> > stuff! What I'd like to see next from that arena is the ability to
> define
> > pointcuts and aspects dynamically rather than with a recompile.
> > 
> > Donnie
> > 
> > 
> > > -----Original Message-----
> > > From: Nicholas Lesiecki [mailto:[EMAIL PROTECTED]]
> > > Sent: Thursday, January 10, 2002 5:52 PM
> > > To: Struts Developers List
> > > Subject: AspectJ and Struts Exception handling:
> > > 
> > > 
> > > Hello,
> > > 
> > > A while back Rick Hightower submitted a request to change the way 
> > > Struts handles errors. His problem (and mine) is that Struts 
> > > tends to catch exceptions and throw different exceptions 
> > > indicating the problem. Needless to say this can badly obscure 
> > > the original cause of the error.
> > > 
> > > So today I set about remedying it using AspectJ--an aspect 
> > > oriented extension to Java produced by Xerox PARC 
> > > (http://www.aspectj.org). I added the following aspect to the 
> > > org.apache.struts package:
> > > 
> > > public aspect ExceptionLogger{
> > > 
> > >   before(Throwable e) : args(e) && handler(Throwable+){
> > >     System.err.println("Exception caught in the Struts framework:");
> > >     e.printStackTrace(System.err);
> > >   }
> > > }
> > > 
> > > Then I compiled Struts with an Ant task for AspectJ compilation:
> > > 
> > > <target name="compile.library" depends="prepare.library"
> > >      description="Compile Struts library files">
> > >         <ajc srcdir="${src.share.dir}"
> > >             destdir="${build.home}/library/classes">
> > >             <classpath refid="compile.classpath"/>
> > >         </ajc>
> > >     [...task continues as normal...]
> > > 
> > > Now all exceptions caught in the Struts framework are 
> > > automatically logged to System.err. 
> > > 
> > > So my question is:
> > > 
> > > Should we consider the use of AspectJ in Struts? This would 
> > > potentially have no effect on the users of the framework, but 
> > > could be valuable for implementing logging and error-handling 
> > > policies. The above code could be modified to write to a log4j 
> > > log if that would be more convenient.
> > > 
> > > Does this intrigue anyone? Should we continue investigation?
> > > 
> > > Cheers,
> > > 
> > > Nicholas Lesiecki
> > > 
> > > (For more info on AspectJ, look for my forthcoming article on 
> > > IBM's developerWorks.)
> > > 
> > > Technical Team Lead
> > > eBlox, Inc.
> > > (520) 615-9345 x104
> > > Check out my new book!:
> > > Java Tools for Extreme Programming: Mastering Open Source Tools, 
> > > including Ant, JUnit, and Cactus
> > > 
> > > http://www.amazon.com/exec/obidos/ASIN/047120708X/
> > > 
> > > 
> > > 
> > > 
> > > --
> > > To unsubscribe, e-mail:   
> > <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail:
> > <mailto:[EMAIL PROTECTED]>
> > 
> > 
> > 
> > --
> > To unsubscribe, e-mail:
> > <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail:
> > <mailto:[EMAIL PROTECTED]>
> 
> --
> To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to