cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Konstantin Piroumian" <kpiroum...@apache.org>
Subject Re: Bug in JSPReader?
Date Mon, 04 Aug 2003 11:05:07 GMT
From: "Marc Baumgartner" <moewe@gmx.de>

> Hello!
>
> > The problem is in the way the JSPEngine is implemented. It simply gets
an
> > URI and calls the JSP servlet with it. Obviously the JSP servlet knows
> > nothing about Cocoon's sitemaps or resolver and interprets all the
requests
> > either as an absolute path (but relative to the app context, e.g.
> > /myapp/jsp/welcome.jsp) or as a relative to the current request context
> > path, which is not always correspond??? to the real JSP file location
(e.g.
> > when you map a subsitemap to some URI).
> >
> > Hope my explanation was clear.
>
> That explains why a simple <jsp:include /> or <jsp:forward /> tag does not
> work. Is there a possible workaround?

There was something like a JSPFilter or so some time ago in Cocoon that
could be configured to be run on *.jsp requests (it is called at the end of
Cocoon processing), this can solve the problems with includes/forwards, but
you will be a little bit limiting compared to the current approach, though,
it's much more servlet spec. friendly.

Another possible solution could be rewrite the HttpServletRequest wrapper in
JSPEngine (or JSPReader/JSPEngine, don't remember exactly) to substitue
Cocoon's paths with webapp context relative paths, so the JSP could work as
usual. This one is just a suggestion, I'm not sure that it's possible to do
easily.

-- Konstantin

>
> Regards
> Marc
>
>
> >
> > Regards,
> >   Konstantin
> >
> > > Joerg
> > >
> > > Konstantin Piroumian wrote:
> > > > This method is available from the Request object which is already
> >
> > available
> >
> > > > in JSPReader/JSPGenerator (it is retrieved using
> >
> > ObjectModel.getRequest() or
> >
> > > > something like that).
> > > >
> > > > Regards,
> > > >   Konstantin
> > > >
> > > > From: "Marc Baumgartner" <moewe@gmx.de>
> > > >
> > > >>Okay, I will try to provide a patch. But I don't know the framework
> > > >> very
> > > >
> > > > well,
> > > >
> > > >>so there are some questions:
> > > >>
> > > >>Which class contains the getSitemapURI function? How can I get
class?
> > > >>
> > > >>Regards
> > > >>Marc
> > > >>
> > > >>Am Freitag, 1. August 2003 08:10 schrieb Konstantin Piroumian:
> > > >>>Yes, that should be fixed. At the time of writing the JSPReader
(and
> > > >>>JSPGenerater as well) there were no any means for obtaining the
> > > >>> current sitemap URI relative the web application context. Now
there
> > > >>> is
> >
> > something
> >
> > > >>>like getSitemapURI that can help with it.
> > > >>>
> > > >>>Please post a patch to Bugzilla if you fix this (also, please fix
the
> > > >>>JSPGenerator).
> > > >>>
> > > >>>Regards,
> > > >>>  Konstantin Piroumian
> > > >>>kpiroumian@apache.org
> > > >>>
> > > >>>----- Original Message -----
> > > >>>From: "Marc Baumgartner" <moewe@gmx.de>
> > > >>>To: <users@cocoon.apache.org>
> > > >>>Sent: Thursday, July 31, 2003 21:39
> > > >>>Subject: Bug in JSPReader?
> > > >>>
> > > >>>
> > > >>>Hello all,
> > > >>>
> > > >>>it seems that there is a bug in the JSPReader class?
> > > >>>
> > > >>>I have the following sitemap entry:
> > > >>>
> > > >>><map:match pattern="admin/*.jsp">
> > > >>>  <map:read type="jsp" src="test/{1}.jsp" mime-type="text/html"
/>
> > > >>></map:match>
> > > >>>
> > > >>>With entering the url "localhost:8080/cocoon/admin/hello.jsp" I
get
a
> > > >
> > > > error
> > > >
> > > >>>message that the ressource
> > > >>> "localhost:8080/cocoon/test/admin/hello.jsp"
> > > >
> > > > can
> > > >
> > > >>>not be found.
> > > >>>
> > > >>>I am using tomcat 4.1.24 and have tried this with cocoon 2.04,
> >
> > 2.1m1-m3.
> >
> > > >>>I took a look at the sourcecode of the JSPReader and there are
the
> > > >>>following lines:
> > > >>>
> > > >>>// get current request path
> > > >>>String servletPath = httpRequest.getServletPath();
> > > >>>// remove file part
> > > >>>servletPath = servletPath.substring(0,servletPath.lastIndexOf('/')
+
> >
> > 1);
> >
> > > >>>url = servletPath + url;
> > > >>>
> > > >>>I call this URL: "localhost:8080/cocoon/admin/hello.jsp"
> > > >>>
> > > >>>The variable servletPath contains "/admin/hello.jsp".
> > > >>>Then this path is reduced to "/admin/".
> > > >>>The variable url contains the path to which we are mapping:
> > > >>>"/test/hello.jsp".
> > > >>>
> > > >>>But the final url is "/admin/test/hello.jsp"
> > > >>>
> > > >>>From my point of view the variable servletPath has to contain the
path
> > > >
> > > > the
> > > >
> > > >>>current subsitemap. In my case "/".
> > > >>>
> > > >>>Is this maybe a bug?
> > > >>>
> > > >>>regards
> > > >>>Marc
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> > > For additional commands, e-mail: users-help@cocoon.apache.org
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> > For additional commands, e-mail: users-help@cocoon.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Mime
View raw message