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]>