Ronnie,

Here is what I see: you have two traces that both invoke your
Action.execute() with one call (each) from the TilesRequestProcessor.  Since
your trace doesn't show two calls to the Tiles Request Processor, that
suggests your browser is submitting twice.  The question is why is it
different when you have a Tile listed as your success/error ActionForward.
To help debug this, can you show us:

1) Your form's <form .... > declaration tag (especially any onclick
declarations).

2) Any submit buttons (both HTML the browser sees and from the JSP page) you
use in that form with any onclick="..." declarations so we can be sure it
isn't performing a submit calls from a submit button resulting in some sort
of double submit such as you saw?

3) Your Action and forward definitions for both the tile use and the direct
JSP use.  For example, are you adding 'redirect="true"' to your forward when
you are using a JSP so the browser redirects externally to the JSP or with
it as false so it performs an internal submit so the browser never knows the
true destination/JSP-page?

Regards,
David

-----Original Message-----
From: Ronnie Arosa [mailto:[EMAIL PROTECTED]
Sent: Wednesday, July 20, 2005 1:51 PM
To: 'Struts Users Mailing List'
Subject: RE: TilesRequestProcessor is executed twice


Well, I'm debugging my source code with Sysdeo's eclipse plugin. I toggled a
breakpoint in one of my action, and founded that it'd been executed twice.

Of course results of my actions are obtained twice (i.e. an insert in a
database is done twice).

I've added the 2 stack traces below this.

This is the first execution's stack trace:
Thread [http-80-Processor22] (Suspended (breakpoint at line 46 in
PartesMedicosAction))
        PartesMedicosAction.execute(ActionMapping, ActionForm,
HttpServletRequest, HttpServletResponse) line: 46

TilesRequestProcessor(RequestProcessor).processActionPerform(HttpServletRequ
est, HttpServletResponse, Action, ActionForm, ActionMapping) line: 421
        TilesRequestProcessor(RequestProcessor).process(HttpServletRequest,
HttpServletResponse) line: 226
        ActionServlet.process(HttpServletRequest, HttpServletResponse) line:
1164
        ActionServlet.doPost(HttpServletRequest, HttpServletResponse) line:
415
        ActionServlet(HttpServlet).service(HttpServletRequest,
HttpServletResponse) line: 709
        ActionServlet(HttpServlet).service(ServletRequest, ServletResponse)
line: 802
        ApplicationFilterChain.internalDoFilter(ServletRequest,
ServletResponse) line: 252
        ApplicationFilterChain.doFilter(ServletRequest, ServletResponse)
line: 173
        StandardWrapperValve.invoke(Request, Response) line: 213
        StandardContextValve.invoke(Request, Response) line: 178
        StandardHostValve.invoke(Request, Response) line: 126
        ErrorReportValve.invoke(Request, Response) line: 105
        StandardEngineValve.invoke(Request, Response) line: 107
        CoyoteAdapter.service(Request, Response) line: 148
        Http11Processor.process(InputStream, OutputStream) line: 856

Http11Protocol$Http11ConnectionHandler.processConnection(TcpConnection,
Object[]) line: 744
        PoolTcpEndpoint.processSocket(Socket, TcpConnection, Object[]) line:
527
        LeaderFollowerWorkerThread.runIt(Object[]) line: 80
        ThreadPool$ControlRunnable.run() line: 684
        ThreadWithAttributes(Thread).run() line: 595


The second time the Action is executed:

Thread [http-80-Processor25] (Suspended (breakpoint at line 46 in
PartesMedicosAction))
        PartesMedicosAction.execute(ActionMapping, ActionForm,
HttpServletRequest, HttpServletResponse) line: 46

TilesRequestProcessor(RequestProcessor).processActionPerform(HttpServletRequ
est, HttpServletResponse, Action, ActionForm, ActionMapping) line: 421
        TilesRequestProcessor(RequestProcessor).process(HttpServletRequest,
HttpServletResponse) line: 226
        ActionServlet.process(HttpServletRequest, HttpServletResponse) line:
1164
        ActionServlet.doGet(HttpServletRequest, HttpServletResponse) line:
397
        ActionServlet(HttpServlet).service(HttpServletRequest,
HttpServletResponse) line: 689
        ActionServlet(HttpServlet).service(ServletRequest, ServletResponse)
line: 802
        ApplicationFilterChain.internalDoFilter(ServletRequest,
ServletResponse) line: 252
        ApplicationFilterChain.doFilter(ServletRequest, ServletResponse)
line: 173
        StandardWrapperValve.invoke(Request, Response) line: 213
        StandardContextValve.invoke(Request, Response) line: 178
        StandardHostValve.invoke(Request, Response) line: 126
        ErrorReportValve.invoke(Request, Response) line: 105
        StandardEngineValve.invoke(Request, Response) line: 107
        CoyoteAdapter.service(Request, Response) line: 148
        Http11Processor.process(InputStream, OutputStream) line: 856

Http11Protocol$Http11ConnectionHandler.processConnection(TcpConnection,
Object[]) line: 744
        PoolTcpEndpoint.processSocket(Socket, TcpConnection, Object[]) line:
527
        LeaderFollowerWorkerThread.runIt(Object[]) line: 80
        ThreadPool$ControlRunnable.run() line: 684
        ThreadWithAttributes(Thread).run() line: 595

Thx. Ronnie.
-----Mensaje original-----
De: David G. Friedman [mailto:[EMAIL PROTECTED]
Enviado el: miércoles, 20 de julio de 2005 17:19
Para: Struts Users Mailing List
Asunto: RE: TilesRequestProcessor is executed twice

Ronnie,

What do you see that makes you think the tiles request is bring processed
twice?  Perhaps that indicator can help us determine your problem.

Regards,
David

-----Original Message-----
From: Ronnie Arosa [mailto:[EMAIL PROTECTED]
Sent: Wednesday, July 20, 2005 6:19 AM
To: Struts Users Mailing List
Subject: TilesRequestProcessor is executed twice


Hello everybody,
I'm working in a struts application with tiles and modules. It’s my first
time working with tiles and I felt into a problem: the TilesRequestProcessor
is called twice. This happens when I forward my actions to a tile. If the
same action is forward to a simple page (i.e. a jsp page) everything goes
normally. 
Here is one of my actions’ definition:

<action path="/myRequest" type="com.indicusoft.struts.myRequestAction">
        <forward name="failure" path="myRequest.page"></forward>
        <forward name="success" path="myRequest.page"></forward>
</action>

And this is my tiles’ definition file:
<definition name=".mainLayout" path="/common/classicLayout.jsp">
        <put name="title" value="My application"></put>
        <put name="header" value="/common/header.jsp"></put>
        <put name="menu" value="/commons/blank.jsp"></put>
        <put name="footer" value="/common/footer.jsp"></put>
        <put name="error" value="/common/error.jsp"></put>
        <put name="body" value=""></put>
</definition>

<definition name="myRequest.page" extends=".mainLayout">
        <put name="title" value="Request Page"></put>
        <put name="body" value="/myRequest.jsp"></put>
</definition>

Thanks in advance.
Ronnie.



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

Reply via email to