3

We are publishing JSP pages from SDL Web 8. The pages in the CMS have some CPs added to them. The Component Template output format is defined as "JSP Scripting". Component Presentations based on this Component Template is defined as "Published as a Dynamic Component".

Prior to the upgrade to SDL Web8, the published JSP pages on the presentation side used to have code similar to <tridion:ComponentPresentation pageURI="tcm:xx-xxx-xx" componentURI="tcm:xx-xxxx" templateURI="tcm:xx-xxx-xx"/> which resulted in the DCP being included in the HTML output of the page.

However after the upgrade to Web8, we noticed that none of the published pages have this kind of tags and all DCP outputs have disappeared from the pages.

We have verified that the DCPs are published and we can see the DCP fragment .jsp files on the file system. Also the deployer config has the proper tcdl.target.language, tcdl.jsp.style and jsp.tagprefix defined.

Kindly advice on how to troubleshoot this.

  • Legacy publishing or Topology publishing? – Albert Romkes Aug 8 '16 at 12:04
  • Topology publishing – Husain Zahid Aug 8 '16 at 12:35
  • Folder access permissions for the DCPs? Also, did you set the CD web app logs to debug and check their output? – Nickoli Roussakov Aug 8 '16 at 12:46
  • The DCPs are being created and I can test individual DCPs by their URLs. The problem is there is no reference to the DCP in the page. – Husain Zahid Aug 8 '16 at 12:57
3

The problem was resolved by changing the below line of code in the "Group component by placeholder" TBB.

Original Code:

private const string TemplatePlaceholderNameXPath = "//*[local-name()='Metadata']/*[local-name()='ContentPlaceholder']";

Modified Code:

private const string TemplatePlaceholderNameXPath = "//*[local-name()='ContentPlaceholder']";
2

I would troubleshoot this as follows:

Check the web app to ensure it's not set to pull DCPs from the DB and is indeed configured to pull from the FS.

Set the CD logs to DEBUG, especially on the we app. Restart the system and redo some page requests to reproduce the issue. Check the logs and see if there is anything strange, like a stacktrace for an exception, e.g. File system directory access permissions or the API trying to read from a different folder mapping since the upgrade.

Another thing to check is that the proper folder/directory is set to pull the DCPs from. Perhaps Web 8 uses a different relative root position?

If the above don't get to the solution, I would try to backup and get rid of all DCPs in the published folder (temporarily) and then create a new page with one new DCP and publish it. Verify that the new DCP is on the FS and that the page's markup has its tcm ids referenced (I.e. Not trying to pull something else). Basically, keep eliminating variables one by one until you find it.

  • After looking at the transport zip package on the CMS server I noticed that the page in the zip package also does not have any tcdl tags which get translated into <tridion:componentpresentation... tags on the delivery side. – Husain Zahid Aug 8 '16 at 13:32
  • So what do you have instead of the tags on the CM, the original template code? IIRC, one of the TBBs in the Default Finish Actions transforms the template code into TCDL. – Nickoli Roussakov Aug 8 '16 at 13:51
  • Nothing. The placeholder comes out blank in the page. I have already updated the Default TBBs using Web8 Template Builder and recompiled all my page and component templates using the Web8 DLLs. – Husain Zahid Aug 9 '16 at 7:31
  • 1
    Finally I narrowed down the problem to a TBB with the name "Group components by placeholder". I am debugging through this TBB to see why it is not adding the components where they are supposed to go. – Husain Zahid Aug 9 '16 at 8:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.