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
////////////////////////// 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.servlet.
ServletRequest, javax.servlet.ServletResponse) void
org.apache.struts.action.ActionServlet.processActionForward(org.apache.strut
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.HttpServle
tRequest, javax.servlet.http.HttpServletResponse) void
org.apache.struts.action.ActionServlet.doGet(javax.servlet.http.HttpServletR
equest, javax.servlet.http.HttpServletResponse) void
javax.servlet.http.HttpServlet.service(javax.servlet.http.HttpServletRequest
, 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.servlet.
ServletRequest, javax.servlet.ServletResponse) void
com.ibm.servlet.engine.webapp.StrictLifecycleServlet._service(javax.servlet.
ServletRequest, javax.servlet.ServletResponse) void
com.ibm.servlet.engine.webapp.IdleServletState.service(com.ibm.servlet.engin
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.ServletR
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.servle
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.servlet
.ServletRequest, javax.servlet.ServletResponse, boolean) void
com.ibm.servlet.engine.webapp.WebAppRequestDispatcher.include(javax.servlet.
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.HttpServlet
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.servlet
.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, boolean)
void
org.apache.jasper.runtime.JspServlet.serviceJspFile(javax.servlet.http.HttpS
ervletRequest, javax.servlet.http.HttpServletResponse, java.lang.String,
java.lang.Throwable, boolean) void
org.apache.jasper.runtime.JspServlet.service(javax.servlet.http.HttpServletR
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.servlet.
ServletRequest, javax.servlet.ServletResponse) void
com.ibm.servlet.engine.webapp.StrictLifecycleServlet._service(javax.servlet.
ServletRequest, javax.servlet.ServletResponse) void
com.ibm.servlet.engine.webapp.ServicingServletState.service(com.ibm.servlet.
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.ServletR
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.servle
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.servlet
.ServletRequest, javax.servlet.ServletResponse, boolean) void
com.ibm.servlet.engine.webapp.WebAppRequestDispatcher.include(javax.servlet.
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]>