You are here

WebCenter 11g Ps3 Tutorial Part 5: Using Content Presenter templates

As told in the previous part, the Content Presenter is one of the most versatile components of WebCenter. You can't live without it. Especially if you are integrating content from UCM.

In the previous part we touched the surface of this powerful component. In this part I intend to go much further and explain all the inns and outs of the Content Presenter. I will show you the best practice for integrating content from UCM into WebCenter. Content in UCM can be stored as structured information. People who are familiar with Site Studio should know how to build those structures and use them in a region template.
This is exactly what we will be doing in this part of the tutorial but adapted to WebCenter. Some people might have seen that the Content Presenter can cope with region templates but this is not the best way to go.

Region templates are stateful in Site Studio because you integrate them into placeholders and can add parameters to the request. When using region templates in WebCenter you can't do this. This means that they are stateless. There is no way to pass any parameter to a region template from WebCenter. Instead, the Content Presenter allows us to build a content presenter in ADF. By doing so, we can use both the WebCenter and ADF context. We can also make use of all the rich components available in ADF.
Another advantage of this technique is that you can make use of the skinning in ADF while if you are using region templates, you also need to create the style in Site Studio meaning that you have layout on two different places which is not good.

So far the intro. Let's get on with it.
Let's start putting some real content onto our VIE portal. As you know from the first sections, VIE provides training. In order to present a list of trainings, we need to allow trainers to enter the information about their training. A training is a typical type of content that is structured. It has a title, description, prerequisites section and maybe an image about the product. We will build this structure in Site Studio and use this in our portal so trainings can specify the details in a structured way. After this, we will also build a template that lists all of the trainings and have a read more link which will bring the user to a page with all the information about the training.

Initializing Site Studio

This first part will be done in Site Studio. People who do not have site studio installed can download it from their UCM installation. Just log in with the administrator, go to My Content Presenter and click on My Downloads. Click on the Site Studio link and install it.

When you open Site Studio, it will ask for a connection. If you do not have a connection created to your local UCM we'll create one now.
Press the New button to open the New Connection popup:

Specify the server CGI URL. If you have installed UCM locally, the URL should be something like this: http://localhost:16200/cs/idcplg

Press connect in order to connect to the server. You will see a login screen from UCM to authenticate.
The Site Label dropdown list should be empty unless you have created sites before with Site Studio. We will create a new one to store all our VIE material so press New next to the Site Label dropdown list.

Specify viePortal for the Id and Vie Portal for the name:

Press OK

if you get a message that the default document settings have not been set then you need to go to the Administration section in UCM and select Set default Project Document Information from the Site Studio folder. From this screen you need to specify what the default metadata for your project files are.

If all is done just press OK and Done to close the popup and select the Vie Portal site in Site Studio.

Creating the element definitions

The way Site Studio works with structured data is by creating elements and regions. The elements are the building blocks of your regions. In our case, a training is a region which contains elements like title, description, prerequisites and image:

We first will create each element and then we will create the Training region and add each element to it.

Let's create the title for our training.

In Site Studio select Region Elements from the Site Assets list:

This shows a list of all the existing elements. We haven't created an element yet so it is empty.

Press the create new button (icon with the page) and select New, Plain Text Element Definition

As you can see, there are multiple types of elements that we can create. The ones we will be using are the WYSIWYG, Plain Text and Image element definition.

The first element that we will create is the title which is a plain text element. We don't want the trainers to put rich text in this field.

A window will open were we need to specify the metadata of the element. As you might notice, this is a regular checkin form from UCM. All of these definitions will be stored as content in UCM which means that you have versioning, security and so on.

Select System as the type and trainingTitle as the Title. Select Secure as the Security group. All other fields can be remain the default:

click the Assign Info to create the element. It should now appear in the list.

Now create the Description. Select WYSIWYG element when you create the element.
This is the metadata:

Create a WYSIWYG element for the prerequisites:

Create an Image element for the image:

When all these elements are created, your Element Definitions list should look similar:

The content ID's may be different from your system but the Title should be the same.

Creating the region definition

Now that all the elements are created, we can create our region definition.
In Site Studio select Region Definitions from the Site Assets.

Press the create new button and select Region Definition:

You also get a popup to specify the metadata for the region:

All the other meta fields can remain their defaults. Once assigned the information the region should appear in the list. Right click on it and select edit. This opens the popup that allows us to assign the elements. Press the Add button.

As you can see, here we specify the Content ID instead of allowing the auto number. This is because we will need to reference the definition from our template in WebCenter. Otherwise we would need to use the auto number as the reference which is not that readable.

Specify a name, label and select the element that we just created from the Element Definition ID.

As you can see, the dropdown shows the Content ID instead of the title. If you are not sure, just press the Search button and you see a list of all the element definitions. From there you can select it.

Add the other elements so the list should look something like this:

Close the window. Click yes when Site Studio asks to save the definition.

That's it. We now have our structured data so trainers can start creating their trainings.

Building the Content Presenter templates

The way WebCenter can handle these structured data is by building templates for the content presenter. These templates are regular fragments. This allow us to use the complete functionality from ADF and WebCenter to build templates. That's also one of the reasons why I recommend content presenter templates instead of region templates. Region templates are templates build in Site Studio which can also be consumed by the content presenter. The biggest disadvantage of region templates is that they are stateless in a WebCenter environment while content presenter templates are statefull which allow us to pass parameters and make it more dynamic.

Each template can display the content in a separate way. The beauty of these templates is that not every template should make use of all the content elements. For example, we will create 3 templates for the Vie Portal. The first one will be a template that displays a single training in a list. The second template will be the list itself that includes the first template. The last template will be the template that shows the complete information about the training. Only the last template will display the prerequisites and the image. Everything will be clear in a few moments.

Tempalte 1: List Item Template

The first template will be used to show a single item. When creating a template for the content presenter you have to decide up front if the template will display a single item or multiple items. This template will be used to display a single item.

First of all let's create the folder to store our content presenter templates.
Right click on the portalapp and select New from the context menu. Select General in the list on the left and Folder in the list on the right in the New Gallery.

Folder name should be contenttemplates:

Select JSF from the list on the left and JSF Page Fragment from the list on the right.

Name the file training-list-item.jsff and press OK:

Use following code for the template:

  1. <?xml version = '1.0'?>
  2. <jsp:root xmlns:jsp="" version="2.1"
  3.   xmlns:af=""
  4.   xmlns:dt="">
  5. <dt:contentTemplateDef var="node">
  6.  <af:panelGroupLayout layout="vertical" id="pgl3">
  7.  <af:panelGroupLayout layout="horizontal" valign="top" id="pgl4">
  8.    <af:outputText value="#{node.propertyMap['RD_TRAINING:title'].asTextHtml}"
  9.         id="ot4" escape="true"
  10.         inlineStyle="font-size:14px; font-weight:bold;"/>
  11. </af:panelGroupLayout>
  12. <af:panelGroupLayout layout="horizontal" valign="top" id="pgl5">
  13.   <af:outputText value="#{node.propertyMap['RD_TRAINING:description'].asTextHtml}"
  14.              escape="false" id="ot5"/>
  15. </af:panelGroupLayout>
  16. <af:panelGroupLayout layout="horizontal" valign="top" id="pgl6">
  17.  <af:goLink text="Read More" id="gil1"
  18.   destination="#{'/faces/oracle/webcenter/portalapp/pages/trainingDetail.jspx?training_id='}#{node.propertyMap['dDocName'].value}"/>
  19. </af:panelGroupLayout>
  20. </af:panelGroupLayout>
  21. </dt:contentTemplateDef>
  22. </jsp:root>

As you can see, this is quite straight forward. The most important part is the beginning:

  1.   <dt:contentTemplateDef var="node">

This tells the template that it will be a single node template. The var represents the actual content that contains all the metadata of the content. That node contains a properyMap with all the metadata. This can be accessed by providing the name of the metadata field. In order to retreive the actual content of the data file from Site Studio we need to provide the name of the region definition and the field of the definition so node.propertyMap['RD_TRAINING:title'] will return the content of the title field from the RD_TRAINING region definition.

All the rest is just regular ADF code.

If we want to reference this template in another template or we want to make it available to the portal, we must turn this template into a portal resource. This can be done by right clicking on the training-list-item.jsff item in the application navigator and select Create Portal Resource

We need to specify a display name which will be used in the list of templates in the content presenter.
Another important parameter is the View ID. This value we specify in that parameter is the value we need to use to reference the template. So for this tempalte we specify trainingListItem:

Press OK to create the resource.

Template 2: List template

The second template we will create is the one that will be used to create the list of items. This is a very simple template that will iterate all the items and include the newly created template.

So, create another fragment and call it training-list.jsff:

Use following code for the template:

  1. <?xml version = '1.0'?>
  2. <jsp:root xmlns:jsp="" version="2.1"
  3.   xmlns:af=""
  4.   xmlns:dt=""
  5.   xmlns:f="">
  6. <dt:contentListTemplateDef var="nodes">
  7.  <af:panelGroupLayout layout="vertical" id="list" valign="top">
  8.    <af:iterator var="node" value="#{nodes}">
  9.       <dt:contentTemplate node="#{node}" view="trainingListItem"
  10.                 nodesHint="#{nodes}" id="trainingItem"/>
  11.   </af:iterator>
  12.   <f:facet name="separator">
  13.      <af:spacer id="sp1" height="10px"/>
  14.    </f:facet>
  15. </af:panelGroupLayout>
  16. </dt:contentListTemplateDef>
  17. </jsp:root>

This code is also quite straight forward. In the beginning we tell the template that it will be multi node template by using:

  1.    <dt:contentListTemplateDef var="nodes">

By using an iterator we can loop all the nodes passed to the template by the content presenter. Referencing another template is done by using following code:

  1. <dt:contentTemplate node="#{node}" view="trainingListItem"
  2.  nodesHint="#{nodes}" id="trainingItem"/>

We pass the actual node to it and the view attribute should hold the value specified in the View ID attribute from the portal resource.

Also create a portal resource from that template and call it trainingList:

Template 3: Training Details

The last template will be the template that displays all the information about the training including the prerequisites and an image.

So create a new fragment in the contenttempaltes folder called training-item.jsff:

Use following code for the template:

  1. <?xml version = '1.0'?>
  2. <jsp:root xmlns:jsp="" version="2.1"
  3.      xmlns:af=""
  4.     xmlns:dt="">
  5. <dt:contentTemplateDef var="node">
  6. <af:panelGroupLayout layout="vertical" id="pgl3">
  7.   <af:panelGroupLayout layout="horizontal" valign="top" id="pgl4">
  8.      <af:outputText value="#{node.propertyMap['RD_TRAINING:image'].asTextHtml}"
  9.          escape="false" id="oImage"/>
  10.      <af:outputText value="#{node.propertyMap['RD_TRAINING:title'].asTextHtml}"
  11.            id="ot4" escape="true"
  12.           inlineStyle="font-size:14px; font-weight:bold;"/>
  13.   </af:panelGroupLayout>
  14.   <af:panelGroupLayout layout="horizontal" valign="top" id="pgl5">
  15.       <af:outputText value="#{node.propertyMap['RD_TRAINING:description'].asTextHtml}"
  16.             escape="false" id="ot5"/>
  17.      </af:panelGroupLayout>
  18.      <af:panelGroupLayout layout="horizontal" valign="top" id="pgl6">
  19.      <af:outputText value="#{node.propertyMap['RD_TRAINING:prerequisites'].asTextHtml}"
  20.                  escape="false" id="ot6"/>
  21.       </af:panelGroupLayout>
  22.     </af:panelGroupLayout>
  23.   </dt:contentTemplateDef>
  24. </jsp:root>

This is pretty much the same as the first template but it includes some more elements from the region definition.

Also create a portal resource from that template and call it trainingItem:

Building the list page

Now that our templates are build we can add the content presenter to a page and configure it to use these templates and configure the query so it only will show the training data files.

In earlier sections we have added the courses.jspx page. On this page we will add the content presenter so open the courses.jspx.

Drag and drop the content presenter on the content facet and select Region from the context menu.

Specify following parameters to the taskflow

  • taskflowInstId: this you can choose. It should be unique within the page.
  • dataSourceType: ${'dsTypeQueryExpression'} this tells the content presenter that the value provided in the datasource will be a query.
  • datasource: ${'SELECT * FROM ora:t:IDC:GlobalProfile WHERE ora:p:xRegionDefinition LIKE \'RD_TRAINING\'} this is perhaps the most difficult parameter. This query is a CMIS query. You can read more about the format and use of the CMIS query in an earlier post. This query will return all content where the xRegionDefinition contains RD_TRAINING. This way we display all the trainings.
  • templateView: trainingList This is the value specified in the View ID of the second template. This way we tell the content presenter to use that specific template.

In the source code of the JSPX page add following code just above the region containing the taskflow:

  1.  <af:goLink id="create"
  2.     destination="http://localhost:7777/cs/resources/wcm/custom/sitestudio/contentwizard/webcenter/contentwizard.hcsp?dDocType=Document&amp;cpRegDef=RD_TRAINING&amp;dSecurityGroup=Public&amp;cpIframe=true&amp;forceLogin=1"
  3.     targetFrame="_blank" text="Create New"/>

Make modifications to the URL so it points to your UCM server. In my case UCM is installed on my local system and I have configured OHS so it used port 7777 instead of 16200.
This URL will point to the interface of Site Studio so it allows us to create a new data file. As you see from the URL, we pass the cpRegDef parameter which is the Content ID of the region definition. You can also add additional metadata fields to the URL if you want to preset them.

The complete source code of the courses.jspx should look something like this:

  1. <?xml version='1.0' encoding='UTF-8'?>
  2. <jsp:root xmlns:jsp="" version="2.1"
  3.          xmlns:f=""
  4.          xmlns:h=""
  5.          xmlns:af="">
  6.   < contentType="text/html;charset=UTF-8"/>
  7.   <f:view>
  8.     <af:document id="d1">
  9.       <af:form id="f1" usesUpload="true">
  10.         <af:pageTemplate value="#{bindings.pageTemplateBinding.templateModel}" id="pt1">
  11.           <f:facet name="content">
  12.             <af:panelGroupLayout id="pnl" layout="vertical">
  13.             <af:goLink id="create"
  14.                destination="http://localhost:7777/cs/resources/wcm/custom/sitestudio/contentwizard/webcenter/contentwizard.hcsp?dDocType=Document&amp;cpRegDef=RD_TRAINING&amp;dSecurityGroup=Public&amp;cpIframe=true&amp;forceLogin=1"
  15.                targetFrame="_blank" text="Create New"/>
  16.             <af:region value="#{bindings.doclibcontentpresenter1.regionModel}"
  17.                       id="r1"/>
  18.             </af:panelGroupLayout>
  19.           </f:facet>
  20.         </af:pageTemplate>
  21.       </af:form>
  22.     </af:document>
  23.   </f:view>
  24. </jsp:root>

We are not ready to run the project yet... We still need to build the details page that shows a single item. The reason for this is that we cannot edit or create new items from within a list template. Therefore we need to create another page that uses a single node template instead of a list.

Creating the details page

Right click on the pages folder and select New.
Create a new JSPX file and name it trainingDetail.jspx:

Drag a content presenter in the content facet and provide following parameters:

  • taskflowInstId: you can specify whatever you want for this one
  • datasourceType: ${'dsTypeSingleNode'} this tells the content presenter that the datasource will contain a reference to a single content item
  • datasource: ${'ucm#dDocName:'}${param.training_id} This is a dynamic parameter. As you notice from the first template, we have a Read More link that will link to the details page and add a training_id parameter to the query string. By using this parameter in the datasource, the content provided in the content presenter can be dynamic.
  • templateView: ${'trainingItem'} this is the View ID of the last template we have created.

Now add the trainingDetail.jspx to the pages.xml and make sure the visible attribute is set to false because we don't want the page to appear in the navigation.

That's it. Now we can run the application and test our effort.

If the courses.jspx is not already added to your pages.xml and navigation model you can do this now. This is how the pages.xml and navigation model should look like:

Notice that the trainingDetail.jspx has not been added to the navigation model. We only have added this to the pages.xml so the page can be accessed by the users. There is no reason to show the detail page as an item in the navigation model.

So now run the application and login with the weblogic user and browse to the Courses page:

Because we currently don't have any trainings, we don't see anything. Click on the Create New link so we can finally create the training. If you get the login screen from UCM that's normal. The reason for this is because there is no single sign on configured between our application and UCM. For our tutorial this is not bad but once you are planning on using this in a production environment you should install OAM and configure SSO between UCM and WebCenter.

In the popup select New Contributor data file. In the next screen you need to specify the metadata of the file. Change the title to something meaningful like WebCenter training and put the file in the Vie Portal folder. Press Next and select Edit Content Item now. This will open the contribution mode in Site Studio:

Specify some value for all the elements and press the Save and Close button in the top right corner.
When you return to the portal and refresh the page it should look something like this:

If you wish, you can add more trainings to see the functionality of the list. When you press the read more link of an item you will be redirected to the item and it will show all the content:

As you can see, this template will also display the prerequisites as well as the image. This shows how flexible and versatile these templates are.

I know this is quite a large one and probably a difficult one. If there are some issues or sections that are not clear, please let me know by posting a comment. If I forgot something I can update the section.
Hope you guys like this section. It's a very usefull section that will be used in almost every project. Displaying content is very important and this section shows exactly how to do it in a dynamic way.


Nice post! I see that you learned a lot from George an Stefan during their OOW presentation

Excellent Yannick !
Is there any reason for preferring SS Designer over JDev ?
Can you display SS Dynamic Lists in a Content Presenter template ?

Thanks and regards,


Hi yannick , thanks for your tuto . it will be helpfull for many guys. I have the same question as Julien but with static list on a element definition . We post a SR on the oracle support. But not really good responses. if you have a one.

Hi Yannick, what do you think to use something like that to create content template presenter



In this case, I can use the template without a "fix" region defition. I'm thinking about use this way.

I would like to hear your opnion.


That's not my solution, that's Benwa's. I give it because it's NOT in any doc.
So, for those wanting to access SS Static Lists elements :

  1. <af:iterator var="items" value="#{node.propertyMap['ARTICLE_RGD:chapters'].nestedProperties}">
  2.    <af:outputText id="ot1" value='#{items[0].value}'/>
  3.    <af:outputText id="ot3" value="#{items[1].value}"/>
  4. </af:iterator>



You can also use like this..

I tried this code in a content presenter template and was not successful. Does anyone have a worked example of using a static list region with a content presenter template?



I don't know if any of you ran into difficulty with displaying the list of data files with the same Region Definition file. To list this i replaced value="#{nodes.rowData}" with value="#{nodes}" in the training-list.jsff , this displayed all the data files with same region definition.

You are right sorry.
It should be #{node} instead of node.rowData
it's a remaining of some testing. That's what happens when modifying the code bfore writing the blogpost :)
Thanks for mentioning.

I am not able to see any link for Site Studio download. Don't know why ?

I am clear why we jumped to site studio from Jdeveloper.


So when you click on the My Downloads link, you don't see the Site Studio link?
If not, you can find the setup in following location:

Well I found the reason why I was not getting the link to download Site Studio ... infact the My Downloads was also not available.
First we need to enable Site Studio on Content Server ( A beginner might not know the reason for unavailbility of the download link like me ).

So I referred to to enable site studio and then My Downloads link was there along with Site Studio download link inside it.

Thanks for pointing another location for Site Studio designer. May be you can add this link to enable Site Studio to your tutorial.


Hello Yannick,
I'm pretty much impressed by your tutorial which help me lots while building my application on WebCenter.
I'm actually working on a Taskflow that should retrieve some content from UCM with the help of a RIDC query in my Java Code.
I'm able to retrieve any Metadata from the contents but i'm unable to get the XML content. Do you know if there's any way to make the equivalent of : #{node.propertyMap['RD_TRAINING:description'].asTextHtml} in my java code.

I understand that that it will the content of your next section. if you have some elements to share with me it will pretty much appreciate.

Best Regards,

I seem to be having the same problem, the title field in the example above simply displays the metadata title, not the title field from the actual content.
The other fields don't display at all.

Have you found a solution?

i'm afraid that this would require quite some heavy coding.
The content presenter will look at the XML of the actual content of the data file and parse it so it is available in the content presenter template.
If you want something similar in your own custom taskflow, then you need to write your own parser who will get the XML data file...
I'm afraid there aren't many API's that can help you with this.

Hello Yannick,

Thanks for you reply, i've found quite a simple solution for what i was looking for.
I'm now able to retrieve the NodeWrapperImpl object associated with the node. This object contains all informations i needed:
Node node =
NodeRetrievalFunctions.getNodeById("/" + DocLibADFConfigUtils.getPrimaryConnectionName() +
"/" + id);

FacesContext fctx = FacesContext.getCurrentInstance();
NodeWrapperImpl wrapper =
new NodeWrapperImpl((HttpServletRequest)fctx.getExternalContext().getRequest(),

In my initial code, in fact, we found that the UCM content were corrupted. No Region Definition were correctly found. We have recreated correctly all the objects and finally successed in finding what we need.



Hi Yannick, Thanks for the Greatest Webcenter Tutorial of all time, ACE well deserved!

There is no Designer for Linux or Mac right? Can we only do this tutorial from our VM?

In spaces, How can I enable the in-context content editing feature ??, when I press ctrl+shift+c I can only see a refresh button but not the edit button... thanks !!!

This measn that your user does not have sufficient rights to edit the content. Check the content in UCM to see if the user has enough rights.

I installed UCM and downloaded Site Scope designer using MYDownloads. SiteScope runs on a Windows 7 laptop and UCM is on a Windows 7 desktop. While connecting to UCM, I get the login page. After I enter user and password, I always get prompted for "Do you want to open or save this file - idcplg.txt'. When I say save the file, system comes back to the "login popup form". When I click on "Sign-In" again, I get a blank form and it stays there until I close the pop-up window (basicallly this is the only option I have). Then I get a message "Failed to connect to content server. Invalid response from host 200 O". But I am able to view my sites, regions etc.

What am I missing?

Hi Yannick,

We recently started a project where we need to create and render structured content. In order to do a POC, i came around this nice tutorial of yours and implemented following steps

1. Create Element Definitions and Region Definition. Instead of naming it as training i named it as RD_NEWS
2. Create single and list content presenter templates and used these on pages using content presenter as explained by you.
3. Changed occurrences of Training to News

However i could not get the entire experience working as explained by you
1. I was able to launch SS contribution form and create a Contributor Data File through it into the Content Server.
2. However there are 2 problems that i am facing while display
2a. The list of news does not display. I am getting following exception while loading the listing page

oracle.webcenter.content.integration.NoSuchContentTypeException: Apr 11, 2012 12:52:56 PM oracle.webcenter.content.integration.spi.ucm.factory.ContentTypeFactory getContentType
SEVERE: No content type found with name: WCM:RD:RD_News

2b. When i directly launch NewsDetail page, i have replaced datasource to ${'dDocName:NEWS'} then i get the following exception

oracle.webcenter.doclib.internal.model.presenter.conf.PresenterConfigurationException: Apr 11, 2012 12:59:13 PM oracle.webcenter.doclib.internal.model.presenter.conf.PresenterConfigurationException asError
ALL: Invalid content id 'dDocName:NEWS' for datasource type 'dsTypeSingleNode'.

Caused by: java.lang.IllegalArgumentException: Apr 11, 2012 12:59:13 PM oracle.webcenter.content.JCRContentID parse
ALL: Cannot parse JCRContentID from dDocName:NEWS.

Whereas i created NEWS content and i can see it present in the released state in CMS.

Can you help me with what could be wrong here.

Hi All,

I have created a profile and a rule to filter metadata and preset some values. When i integrated content presenter templates as explained above i am able to launch the Site Studio wizard and also display the content on listing and detail page. However i am facing an issue to trigger the profile created in CMS. I have created a profile named NewsProfile with TriggerField=dDocType and Trigger=News and hence dpTriggerValue=News. So i have changed the href of above Create New link to contain additional query parameter dpTriggerValue=News.

But this does not trigger the profile and hence i am seeing whole lot of metadata fields still on the Site Studio Wizard.

Any help in this regard would be much appreciated.

Hi Yannick

I just resolved an issue that had been plauging me. After creating new content, the new content item wasn't appearing after "Create New". Long story short - the LIKE in the CMIS statement was causing some issues. I changed it to = and am now getting resultset.

I am using Jdev and UCM Hopefully this will be helpful to someone.


I had a problem on saving and closing the Site Studio Contributor. After arranging-editting all the things in Contributor, I click "save and close" button but application never saves anything and it does not show the writings,picture etc. It cannot even close itself after clicking close button. It just stuck in this step and it can not progress. Can you help me??

i implement this example and everything goes right till i press the create new button first it tooks me to offline page i replace "localhost" with server ip and replace the port to 16200 it works but when login it took me to page with radiobutton to choose from existing file from server or New Contributor data file. any ideas?
thanks in advance

Ah yes. That's because in my example I am using OHS to act as a proxy.
This means that OHS is running on port 7777 and redirecting traffic from /cs to localhost:16200/cs.

If you haven't installed and configured OHS you have to use the IP of the server and the actual port.

when i create new file and choose edit file and finish there is an error occure
Content Server Request Failed
The Region Definition could not be loaded. The path for the content item 'RDTRAINNING123' could not be computed
any suggestions

I've never seen that error... Do you see anything more in the UCM logs?

Firstly Yannick, this is a great tutorial and just what I was looking for. How could I approach the scenario whereby we want to have our left hand nav bar reflect the currently open training detail page - without using jDeveloper?

Many thanks in advance.

Hi Yannick, thanks for your time putting this great tutorial together!
I'm trying to use the Content Presenter in a manner that it could read an XML (or any other structured file) and format the contents in a specific way. I'm not intending to use site-studio to develop the content, just a simple XML file.
Is there a way to walk over the data on that file and bring the values to defined places in the template created? I can't find any example that does that...
I'm planning to use a XML for the convenience, but I could use a key/value pair as well.
Thanks in advance!

The content presenter is intended for documents in a content presenter. Site Studio is just an additional feature.
I don't believe it is able to parse any XML file.
I don't think you can use the CP for that. Unless of course you pass the actual file contents to a managed bean who does the parsing in a normal java way so you can access it in a template. This might work but it's definitly not OOTB.

After logging into ucm i dont see any section called mydownloads... how can i install this site studio to carry on with this tutorial.

I am accessing ucm in my company from a server machine it is not locally installed.

in continutation to my previous post... i have downloaded and installed site studio 6 Trail version... but it doesn't look like the same as shown in this tutorial screen shot... If i were to download and install site studio which you are showing then which version it should be can you provide me the right link to download. Can i install locally site studio and connect to my ucm which is on a server machine.

It's possible that the SiteStudio component is not installed on your UCM server.
In order for this tutorial to complete you need to have the SiteStudio and SSXA components enabled on the server.
You can ask the admins of the server to enable those components. After enabling those components you should be able to see the mydownloads.

I have spoken to the admin of the ucm server and they say that they dont know about the site studio component. Does this site studio component comes with ucm installation .. or can we have it as a client locally.. where exactly do we need to enable these components at ucm side.

SiteStudio comes with the default installation but it is not enabled by default.
Provide them following link to have it enabled:

As mentioned in some of the threads above i went to the following link

and selected SiteStudio, SiteStudioExternalApplications, and DBSearchContainsOpSupport, and clicked Update. then after restarted the managed server .. i got mydownloads link and i was able to install site studio and do this tutorial

After i have done the part explained in site studio and created content templates in jdev when i started doing section
Building the list page i am facing the problem as to from where should i drag and drop content presenter to content facet.

I have opened courses.jspx and when i try to drag n drop contentpresenter.png on to the content facet of courses.jspx it says

insert file reference as
Adf faces image
jsf graphic html image
html image

it doesnt say as region as explained in tutorial
I think i am doing wrong somewhere can you provide me the exact screenshot as to from where contentpresenter should be dragged and dropped on to the content facet of the courses.jspx page

Ah yes I understand.
You have to drag and drop the content presenter from the resource palette.
The resource palette is normally on the right top of JDeveloper.
Where did you find the content presenter.png?

Thanks yannick now it works

i found the contentpresenter.png in

oracle/webcenter/portalapp/shared folder

when i run the page and click on courses tab on ui after logging in i am getting the following error:

Error 500--Internal Server Error

javax.el.ELException: Error Parsing: ${'SELECT * FROM ora:t:IDC:GlobalProfile WHERE ora:p:xRegionDefinition LIKE \'RD_TRAINING\'}
at com.sun.el.lang.ExpressionBuilder.createNodeInternal(Unknown Source)
at Source)
at com.sun.el.lang.ExpressionBuilder.createValueExpression(Unknown

You are missing a ' in the end.
It's ${'SELECT * FROM ora:t:IDC:GlobalProfile WHERE ora:p:xRegionDefinition LIKE \'RD_TRAINING\''}

Notice the \'' in the end and not \'

Hello, How to add video(wmv,mp4) on Element Definition, for display in Site Studio Contributor?

Video is tricky... UCM does not provide streaming OOTB. IF you want to display a streaming video you need to have a streaming component in UCM or a separate streaming server.
It's not as simple as you might think...

I followed all the steps and when I click on the 'Create New' link it loads the content wizard pop up. But the page is empty. It has nothing on it. Please let me know what to do.


hello sir,
I've been trying to make a content presenter template for a multiple folder structure,

return the first folder level.
Is there a way to acces the content from each folder. for example #{node.children}
or should try to make a query with each folder id to get the content, for example "Select * from UCM where parentCollectionId = #{}.

Hi, Can you tell me if you have to search the contents of the field RD_TRAINING: description in the where clause in content presenter?

when i click on create new link in courses.jspx page i get a login screen of ucm after loggin in i get the following error:

Content Server Request Failed
Error Unable to retrieve file. The dynamic application file is not at the specified location ('/fusion/Middleware/user_projects/domains/ucm_domain/ucm/cs/weblayout/resources/wcm/custom/sitestudio/contentwizard/webcenter/contentwizard.hcsp').


Hi Yannick,

Is there a way to make the Page Template area contributable?
The data that we are pulling from the SiteStduio into content presenter is contributable.But we also wanted to make the content that is coming from the Page template in webcenter to be contributable through webcenter for users.
Can you please let us know if there is a way or work around for this.

That's perfectly possible. The only difference is that normal edit mode is for changing the content on a page, not the page template.
In order to do so, you have to edit the page template itself by going to the administration of the portal and select Templates in the left and then select your template and edit it.

We dont want our end users to go into admin screen.
so we are wondering if there is a way for end users to contribute without getting into admin screen.


Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer