[opencms-dev] function detail page
Daniel Seidel
d.seidel at alkacon.com
Tue Aug 18 09:48:17 CEST 2026
Hi Laurent,
your workaround was the best way. You may also work with permissions to
allow only certain users to add the function to a page instead of
excluding it from search.
The mechanism with container.info will not work for nested containers. I
assume your maincontainer is a nested one. So I'd suggest to view the
function detail page just as a kind of "named page" that you can link to
by the name.
Best, Daniel.
Am 11.08.26 um 17:09 schrieb laurent.druart via opencms-dev:
> Hello,
>
> I’ve an issue with function detail page in OpenCMS 21.
>
> I’ve a dynamic function rendering a list of dynamic content from a db.
> On each row I’ve a link to a function detail page like this:
>
> <a href="${cms.functionDetail['raceDetail']}?idRace=${race.nrRace}">
>
> I created a second dynamic function, the function associated with the
> function detail page. Let’s name this function raceDetail
>
> To hide this function in the wizard in put property search.exclude to all
>
> In .config of my module I added a « named function » named raceDetail
> and in « Function » the path to the xml configuration of the function
>
> I added on my page template a property container.info
> <http://container.info> with value functionDetail=maincontainer
>
> maincontainer is the main container in my template.
>
> In app Sitemap I tried to drag and drop the detail page « raceDetail
> function detail page » in my « technical » folder detail_pages and I
> got the error you can find bellow
>
>
> Function detail container not found for
> "/sites/mysite/.content/.templates/blank.html".
>
> Ticket Id: 1786458784909
> org.opencms.main.CmsException: Function detail container not found for
> "/sites/mysite/.content/.templates/blank.html".
> org.opencms.ade.sitemap.CmsVfsSitemapService.createNewEntry(CmsVfsSitemapService.java:2003)
> org.opencms.ade.sitemap.CmsVfsSitemapService.applyChange(CmsVfsSitemapService.java:1479)
> org.opencms.ade.sitemap.CmsVfsSitemapService.saveInternal(CmsVfsSitemapService.java:1373)
> org.opencms.ade.sitemap.CmsVfsSitemapService.save(CmsVfsSitemapService.java:1154)
> jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
> java.lang.reflect.Method.invoke(Method.java:580)
> com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:587)
> com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:349)
> com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:319)
> com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:389)
> com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:555)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
> org.opencms.gwt.CmsGwtService.service(CmsGwtService.java:215)
> org.opencms.main.OpenCmsCore.invokeGwtService(OpenCmsCore.java:2238)
> org.opencms.main.OpenCmsServlet.doGet(OpenCmsServlet.java:360)
> org.opencms.main.OpenCmsServlet.doPost(OpenCmsServlet.java:381)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:555)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:197)
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
> org.opencms.jsp.jsonpart.CmsJsonPartFilter.doFilter(CmsJsonPartFilter.java:298)
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
> org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:63)
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:619)
> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:399)
> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:338)
> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:283)
> org.opencms.main.OpenCmsUrlServletFilter.doFilter(OpenCmsUrlServletFilter.java:145)
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
> org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:70)
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:166)
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88)
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:491)
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83)
> org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:764)
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72)
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
> org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:398)
> org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:1309)
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1854)
> org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
> org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973)
> org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491)
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
> java.lang.Thread.run(Thread.java:1583)
>
> I found a workaround:
>
> * drag and drop of a normal page in my detail_pages folder
> * in sitemap config in tab « detail pages » add a detail page for
> type function at raceDetail associated to the new page in
> detail_pages folder
> * remove search.exclude=all from the detail function
> * drag and drop of this function to the new page in detail_pages folder
> * add search.exclude=all to the detail function
>
>
> It works but is it the best way to achieve it?
>
> Thanks for your help
>
> Best regards,
>
> Laurent
>
>
> _______________________________________________
> This mail is sent to you from the opencms-dev mailing list
> To change your list options, or to unsubscribe from the list, please visit
> https://lists.opencms.org/mailman/listinfo/opencms-dev
>
>
>
--
Kind Regards
Daniel.
-------------------
Daniel Seidel
Alkacon Software GmbH & Co. KG - The OpenCms Experts
https://www.alkacon.com -http://www.opencms.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opencms.org/pipermail/opencms-dev/attachments/20260818/9b4ddbf1/attachment.htm>
More information about the opencms-dev
mailing list