[opencms-dev] Dynamic Pages (template cache)
Ivan Biddles
ivanb at scientology.net
Mon Jan 20 19:23:52 CET 2003
Thanks, Alex.
Each page has two JSPs associated with it - one for displaying the page,
and the second for routing the incoming requests from that page.
Template
--------
<?xml version="1.0" encoding="utf-8"?>
<PAGE>
<class>com.opencms.template.CmsXmlTemplate</class>
<masterTemplate>/system/modules/.../Master</masterTemplate>
<ELEMENTDEF name="body">
<CLASS>com.opencms.flex.CmsJspTemplate</CLASS>
<TEMPLATE>/system/modules/.../Register1Display.jsp</TEMPLATE>
</ELEMENTDEF>
</PAGE>
Display JSP:
------------
(LinkResolver is just a class with a static method which wraps
LinkSubstitution.getLinkSubstitution, from before the latter became a
static method.)
<%
CmsObject myCmsObject = ((CmsFlexRequest) request).getCmsObject ();
String mySubmitJsp = LinkResolver.resolve (myCmsObject, "/..../
Register1Submitter.jsp ");
%>
<form method="post" name="register" action="<%=mySubmitJsp%>">
etc.
Routing JSP:
-----------
It extracts the request data from the form, makes a back-end validation
call and then either proceeds to the next page or redisplays the
original page with an error message highlighted.
There is no HTML in this JSP at all.
<jsp:useBean id="testBean" class="TestBean" scope="session" />
<jsp:setProperty name="testBean" property="*" />
<%
String myLinkPage = "";
boolean myIsValid = testBean.validate ();
if (myIsValid) {
myLinkPage = LinkResolver.resolve (request,
"/..../register2.html");
}
else {
myLinkPage = LinkResolver.resolve (request,
"/..../register1.html");
}
response.sendRedirect (myLinkPage);
%>
Java Classes
------------
I use the normal CmsXmlTemplate class. My back-end classes are called by
the routing JSP, so they are not really relevant.
That is just about it. I have the control page for "register1.html" set
to "export=dynamic". (I need it to be "export=https", but that's another
issue I'm tracking down.)
Thanks for your help.
Best wishes, Ivan
-----Original Message-----
From: owner-opencms-dev at www.opencms.org
[mailto:owner-opencms-dev at www.opencms.org] On Behalf Of Alexander
Kandzior
Sent: Monday, January 20, 2003 09:53
To: opencms-dev at www.opencms.org
Subject: RE: [opencms-dev] Dynamic Pages (template cache)
Ivan,
I can assure you integrating dynamic parts from JSP in a template is no
general problem. Maybe it's in your way of using the JSP integration. If
you post the significant parts from your template, JSP and your java
classes here I will take a look.
Best Regards,
Alex.
Alexander Kandzior
Alkacon Software - The OpenCms Experts
http://www.alkacon.com
> -----Original Message-----
> From: owner-opencms-dev at www.opencms.org
> [mailto:owner-opencms-dev at www.opencms.org] On Behalf Of Ivan Biddles
> Sent: Monday, January 20, 2003 6:23 PM
> To: opencms-dev at www.opencms.org
> Subject: RE: [opencms-dev] Dynamic Pages (template cache)
>
>
> Hi Christian,
>
> Thanks, but I already do that. It is not the element cache
> that is causing the problem - it is this "template cache".
>
> I created my own subclass of CmsXmlTemplate just for the
> purpose of trying to solve this problem. All it has is an
> override of the getCacheDirectives method in which I return
> "new CachDirectives(false)", as it says to do in the manual.
> But the manual also says that it is for the "element cache".
>
> I have disabled the element cache, and added a logging line
> to CmsObject that proves that the element cache reference
> returned from the "init" method is always null.
>
> However nothing seems to turn off the "template cache", which
> is hard-coded to create a cache of 1000 entries.
>
> I have an ugly temporary workaround in that I have changed
> the CmsTemplateCache "put" method to not store template
> content in the template cache if the supplied key matches one
> of my dynamic pages. This is the only thing I have found that
> stops the behaviour, but this cannot be the solution.
>
> Can someone tell me how to turn this thing off selectively
> and by configuration, or at least without having to change
> the OpenCms code?
>
> Thanks,
> Ivan
>
> -----Original Message-----
> From: owner-opencms-dev at www.opencms.org
> [mailto:owner-opencms-dev at www.opencms.org] On Behalf Of
> Hoffmann, Christian
> Sent: Monday, January 20, 2003 00:39
> To: 'opencms-dev at www.opencms.org'
> Subject: AW: [opencms-dev] Dynamic Pages (template cache)
>
> Hi Ivan,
>
> maybe you should use getCacheDirectives()? It is described in
> Section 2.3.9 (pages 63-69) in the Manual.
>
> Christian
>
> > -----Ursprüngliche Nachricht-----
> > Von: Ivan Biddles [mailto:ivanb at scientology.net]
> > Gesendet: Montag, 20. Januar 2003 09:17
> > An: opencms-dev at www.opencms.org
> > Betreff: [opencms-dev] Dynamic Pages (template cache)
> >
> >
> > Hi,
> >
> > I have been struggling with an issue that my dynamic pages
> > are generated once, when online, but then the JSPs are never
> > run again and the same version is always displayed.
> >
> > I have specified these pages as "export=dynamic", and
> > everything works perfectly in the off-line project.
> >
> > I tracked it down to the "template cache". I had already
> > tried disabling both the element and flex caches without success.
> >
> > (The template cache is only mentioned twice in the Manual,
> > both times in the Javadoc section - pages 200 and 215.)
> >
> > What I found was that my JSP would run once and then its
> > _output_ would be stored in the template cache. From then on
> > OpenCms simply serves up the page as it was originally created.
> >
> > This means that Person A logs in and goes to some page and
> > gets a display of some personal information, let's say. Then
> > Person B does the same thing but he sees Person A's
> > information, because OpenCms is only se5rving up one version
> > of this page.
> >
> > In CmsTemplate Cache, I found the following code:
> >
> > // TODO: get the cache-size from properties
> > private CmsCache templateCache = new CmsCache(1000);
> >
> > So there is no way to turn off this cache from the property file.
> >
> > There must be some way of controlling this behaviour.
> >
> > I'm sure others must tried to create dynamic pages, so it
> > must be some setting that I have got wrong somewhere, but I
> > haven't been able to find what it is.
> >
> > So any help is urgently needed and would be greatly appreciated.
> >
> > Thanks,
> > Ivan
> >
>
More information about the opencms-dev
mailing list