Une erreur s'est produite lors du traitement du gabarit.
Java method "be.idewe.portal.website.articles.service.JournalArticleDataServiceImpl.getJournalArticleData(long, String, Locale)" threw an exception when invoked on be.idewe.portal.website.articles.service.JournalArticleDataServiceImpl object "be.idewe.portal.website.articles.service.JournalArticleDataServiceImpl@6143689e"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: thisFolderUUID = journalArticleDataSe...  [in template "20115#20151#IDEWE.TEMPLATE.WEB.PRO" at line 8, column 9]
	- Reached through: #assign-container  [in template "20115#20151#IDEWE.TEMPLATE.WEB.PRO" at line 1, column 1]
----
1<#assign 
2	compIds = ['a', 'b', 'c', 'd'] 
3 
4	journalArticleDataService = serviceLocator.findService("be.idewe.portal.website.articles.api.JournalArticleDataService") 
5	pagesService = serviceLocator.findService("be.idewe.portal.website.pages.api.PagesService") 
6	proArticleService = serviceLocator.findService("be.idewe.portal.website.articles.api.ProArticleService") 
7	trainingService = serviceLocator.findService("be.idewe.portal.website.training.api.TrainingService") 
8	thisFolderUUID = journalArticleDataService.getJournalArticleData(groupId, .vars['reserved-article-id'].data, locale).getFolderUUID() 
9	relatedProArticles = proArticleService.getRelatedProThemesFromFolder(groupId, thisFolderUUID, .vars['reserved-article-id'].data, locale) 
10    proArticleNavigation = proArticleService.getProThemeNavigationFromFolder(groupId, thisFolderUUID, .vars['reserved-article-id'].data, locale) 
11 
12	componentsJournalArticleData = journalArticleDataService.getRelatedJournalArticleData(componentsContent.getData(), locale) 
13	componentsXml = saxReaderUtil.read(componentsJournalArticleData.getSource().content) 
14	compNodes = componentsXml.selectNodes("/root/dynamic-element[@name='component']") 
15 
16    sourceUrl = themeDisplay.getURLCurrent()?keep_before("?") 
17 
18	thisLayout = themeDisplay.getLayout() 
19	ancestorLayouts = thisLayout.getAncestors() 
20    siteUrl = themeDisplay.getPathFriendlyURLPublic() + thisLayout.getGroup().getFriendlyURL() 
21
22<#if !sourceUrl?starts_with(siteUrl)> 
23    <#assign siteUrl = ''> 
24</#if> 
25<#assign 
26	fullSiteUrl = themeDisplay.getPortalURL() + siteUrl 
27 
28    segmentList = proArticleService.getAllSegments(themeDisplay, groupId, locale) 
29 
30	breadcrumbsSeparatorClass = 'fas fa-angle-right' 
31	leftContentBlockHasContent = leftBlock.leftBlockImage.getData()?has_content || leftBlock.leftBlockText.getData()?has_content 
32	rightContentBlockHasContent = rightBlock.rightBlockImage.getData()?has_content || rightBlock.rightBlockText.getData()?has_content 
33
34<#list compNodes as compNode> 
35	<#assign prefNodes = compNode.selectNodes("dynamic-element[@name='pref']")> 
36	<#list prefNodes as prefNode> 
37		<#assign folderUUID = prefNode.valueOf("dynamic-element[@name='proFolderUUID']/dynamic-content[@language-id='" + themeDisplay.getSiteDefaultLocale() + "']/text()")> 
38		<#if folderUUID == thisFolderUUID> 
39			<#assign 
40				compId = compIds[compNode?index] 
41				compTitle = compNode.valueOf("dynamic-element[@name='componentTitle']/dynamic-content[@language-id='" + locale + "']/text()")?replace("<br/>", " ") 
42				prefId = prefNode?index 
43				prefTitle = prefNode.valueOf("dynamic-element[@name='prefTitle']/dynamic-content[@language-id='" + locale + "']/text()")?replace("<br/>", " ") 
44
45		</#if> 
46	</#list> 
47</#list> 
48<div class="component-pro component-${compId}"> 
49	<#if banner.bannerImage.getData()?? && banner.bannerImage.getData()?has_content> 
50		<div class="segment-details-banner banner <#if banner.isParallax?has_content && banner.isParallax.getData()?? && banner.isParallax.getData() == "true">parallax-image</#if>" 
51            <#if banner.bannerHeight?has_content && banner.bannerHeight.getData()?? && banner.bannerHeight.getData()?number &gt;= 250> style="height: ${banner.bannerHeight.getData()}px;"</#if>> 
52			<img data-fileentryid="${banner.bannerImage.getAttribute("fileEntryId")}" alt="${banner.bannerImage.getAttribute("alt")}" src="${banner.bannerImage.getData()}" class="${banner.bannerImageAlignment.getData()!}" /> 
53			<div class="banner-overlay ${banner.bannerTextPosition.getData()!}"> 
54                <div class="banner-overlay-gradient ${banner.bannerOverlayColor.getData()!}"></div> 
55                <#if banner.bannerTitle.getData()?has_content || banner.bannerText.getData()?has_content> 
56                    <div class="banner-overlay-content-wrapper"> 
57                        <div class="banner-overlay-content-inner"> 
58                            <div class="banner-overlay-content ${banner.bannerOverlayColor.getData()!}"> 
59                                <#if banner.bannerTitle.getData()?has_content> 
60                                    <p class="banner-title">${banner.bannerTitle.getData()}</p> 
61                                </#if> 
62                                <#if banner.bannerText.getData()?has_content> 
63                                    <p class="banner-text">${banner.bannerText.getData()}</p> 
64                                </#if> 
65                            </div> 
66                        </div> 
67                    </div> 
68                </#if> 
69            </div> 
70		</div> 
71	</#if> 
72	<div class="component-pro-breadcrumbs centered-content"> 
73		<ul class="breadcrumbs"> 
74			<#list ancestorLayouts?reverse as ancestorLayout> 
75				<#assign nodeUrl = siteUrl + ancestorLayout.getFriendlyURL(locale)> 
76				<li> 
77					<#if ancestorLayout?index != 0> 
78						<i class="${breadcrumbsSeparatorClass}"></i> 
79					</#if> 
80					<a href="${nodeUrl}">${htmlUtil.escape(ancestorLayout.getName(locale))}</a> 
81				</li> 
82			</#list> 
83			<li> 
84				<i class="${breadcrumbsSeparatorClass}"></i> 
85				<a href="${nodeUrl}#comp=${compId}">${compTitle}</a> 
86			</li> 
87			<li> 
88				<i class="${breadcrumbsSeparatorClass}"></i> 
89				<a href="${nodeUrl}#comp=${compId}&pref=${prefId}">${prefTitle}</a> 
90			</li> 
91			<li> 
92				<i class="${breadcrumbsSeparatorClass}"></i> 
93				${.vars['reserved-article-title'].getData()} 
94			</li> 
95		</ul> 
96	</div> 
97	<div class="component-pro-top centered-content"> 
98        <div class="component-pro-title"> 
99            <h1 id="${companyId}_Top"> 
100                <img src="/o/liferay-idewe-website-theme/images/fourcomponents/component-${compId}-circle.svg" alt="${compId?upper_case}" /> 
101                <span>${.vars['reserved-article-title'].getData()}</span> 
102            </h1> 
103            <#if proArticleNavigation??> 
104                <div class="component-pro-navigation"> 
105                    <div class="component-pro-navigation-previous"> 
106                        <a href="${fullSiteUrl}/-/${proArticleNavigation.previousArticle.getUrlTitle()}" title="${proArticleNavigation.previousArticle.getTitle()}"><i class="fas fa-chevron-circle-left"></i></a> 
107                    </div> 
108                    <div class="component-pro-navigation-next"> 
109                        <a href="${fullSiteUrl}/-/${proArticleNavigation.nextArticle.getUrlTitle()}" title="${proArticleNavigation.nextArticle.getTitle()}"><i class="fas fa-chevron-circle-right"></i></a> 
110                    </div> 
111                </div> 
112            </#if> 
113        </div> 
114		<div class="web-content-paragraph-content">${intro.getData()}</div> 
115		<#if leftContentBlockHasContent || rightContentBlockHasContent> 
116			<div class="content-blocks"> 
117				<#if leftContentBlockHasContent> 
118					<div class="content-block content-block-<#if rightContentBlockHasContent>left<#else>center</#if> image-align-${leftBlock.leftBlockImageAlignment.getData()}"> 
119						<#if leftBlock.leftBlockImage.getData()?has_content> 
120							<img alt="${leftBlock.leftBlockImage.getAttribute("alt")}" src="${leftBlock.leftBlockImage.getData()}" /> 
121						</#if> 
122						<#if leftBlock.leftBlockText.getData()?has_content> 
123							<div>${leftBlock.leftBlockText.getData()}</div> 
124						</#if> 
125					</div> 
126				</#if> 
127				<#if rightContentBlockHasContent> 
128					<div class="content-block content-block-<#if leftContentBlockHasContent>right<#else>center</#if> image-align-${rightBlock.rightBlockImageAlignment.getData()}"> 
129						<#if rightBlock.rightBlockImage.getData()?has_content> 
130							<img alt="${rightBlock.rightBlockImage.getAttribute("alt")}" src="${rightBlock.rightBlockImage.getData()}" /> 
131						</#if> 
132						<#if rightBlock.rightBlockText.getData()?has_content> 
133							<div>${rightBlock.rightBlockText.getData()}</div> 
134						</#if> 
135					</div> 
136				</#if> 
137			</div> 
138		</#if> 
139		<#if topParagraph?has_content> 
140			<#list topParagraph.getSiblings() as topParagraphItem> 
141				<div class="web-content-paragraph color-${topParagraphItem.topParagraphColor.getData()} clearfix"> 
142					<#if topParagraphItem.topParagraphTitle.getData()?has_content> 
143						<h2 class="web-content-paragraph-title">${topParagraphItem.topParagraphTitle.getData()}</h2> 
144					</#if> 
145					<#if topParagraphItem.topParagraphImage?? && topParagraphItem.topParagraphImage.topParagraphImageAlignment?? && topParagraphItem.topParagraphImage.topParagraphImageAlignment.getData() != ""> 
146                        <#assign imageAlignment = topParagraphItem.topParagraphImage.topParagraphImageAlignment.getData()> 
147                    <#else> 
148                        <#assign imageAlignment = "left"> 
149                    </#if> 
150                    <#if topParagraphItem.topParagraphImage.topParagraphImageFile?? && topParagraphItem.topParagraphImage.topParagraphImageFile.getData()?has_content> 
151						<#if topParagraphItem.topParagraphImage.topParagraphImageWidth?? && topParagraphItem.topParagraphImage.topParagraphImageWidth.getData() != ""> 
152                            <#assign imageWidth = topParagraphItem.topParagraphImage.topParagraphImageWidth.getData()> 
153                        <#else> 
154                            <#assign imageWidth = "full"> 
155                        </#if> 
156                        <div class="web-content-paragraph-image alignment-${imageAlignment} width-${imageWidth} wow fadeIn"> 
157							<img alt="${topParagraphItem.topParagraphImage.topParagraphImageFile.getAttribute("alt")}" src="${topParagraphItem.topParagraphImage.topParagraphImageFile.getData()}" /> 
158						</div> 
159					</#if> 
160					<div class="web-content-paragraph-content alignment-${topParagraphItem.topParagraphImage.topParagraphImageAlignment.getData()}">${topParagraphItem.topParagraphContent.getData()}</div> 
161				</div> 
162			</#list> 
163		</#if> 
164	</div> 
165	<div class="component-pro-bottom centered-content"> 
166		<#if bottomParagraph?has_content> 
167			<#list bottomParagraph.getSiblings() as bottomParagraphItem> 
168				<div class="web-content-paragraph color-${bottomParagraphItem.bottomParagraphColor.getData()} clearfix"> 
169					<#if bottomParagraphItem.bottomParagraphTitle.getData()?has_content> 
170						<h2 class="web-content-paragraph-title">${bottomParagraphItem.bottomParagraphTitle.getData()}</h2> 
171					</#if> 
172					<#if bottomParagraphItem.bottomParagraphImage?? && bottomParagraphItem.bottomParagraphImage.bottomParagraphImageAlignment?? && bottomParagraphItem.bottomParagraphImage.bottomParagraphImageAlignment.getData() != ""> 
173                        <#assign imageAlignment = bottomParagraphItem.bottomParagraphImage.bottomParagraphImageAlignment.getData()> 
174                    <#else> 
175                        <#assign imageAlignment = "left"> 
176                    </#if> 
177                    <#if bottomParagraphItem.bottomParagraphImage.bottomParagraphImageFile?? && bottomParagraphItem.bottomParagraphImage.bottomParagraphImageFile.getData()?has_content> 
178						<#if bottomParagraphItem.bottomParagraphImage.bottomParagraphImageWidth?? && bottomParagraphItem.bottomParagraphImage.bottomParagraphImageWidth.getData() != ""> 
179                            <#assign imageWidth = bottomParagraphItem.bottomParagraphImage.bottomParagraphImageWidth.getData()> 
180                        <#else> 
181                            <#assign imageWidth = "full"> 
182                        </#if> 
183                        <div class="web-content-paragraph-image alignment-${imageAlignment} width-${imageWidth} wow fadeIn"> 
184							<img alt="${bottomParagraphItem.bottomParagraphImage.bottomParagraphImageFile.getAttribute("alt")}" src="${bottomParagraphItem.bottomParagraphImage.bottomParagraphImageFile.getData()}" /> 
185						</div> 
186					</#if> 
187					<div class="web-content-paragraph-content alignment-${bottomParagraphItem.bottomParagraphImage.bottomParagraphImageAlignment.getData()}">${bottomParagraphItem.bottomParagraphContent.getData()}</div> 
188				</div> 
189			</#list> 
190		</#if> 
191	</div> 
192	<div class="component-pro-trainings centered-content"> 
193		<div class="web-content-paragraph color-green"> 
194			<h2 class="web-content-paragraph-title">${trainingParagraph.trainingParagraphTitle.getData()}</h2> 
195			<div class="web-content-paragraph-content">${trainingParagraph.trainingParagraphContent.getData()}</div> 
196			<#if trainingParagraph.websiteThema?has_content> 
197				<div class="component-pro-trainings-list"> 
198						<#assign relatedTrainings = trainingService.getRelatedTrainingForWebsiteThema(trainingParagraph.websiteThema.getData(), pagesService.getOpleidingsDetailUrl(themeDisplay), locale)> 
199						<ul> 
200						<#list relatedTrainings as training> 
201							<li>${training.title} <a href="${training.url}" class="button button-green-inverted"><@liferay.language key="idewe.meer.info" /></a></li> 
202						</#list> 
203					</ul> 
204				</div> 
205			</#if> 
206		</div> 
207	</div> 
208	<div class="component-pro-contact centered-content"> 
209		<#if contactParagraph?has_content> 
210			<#if contactParagraph.contactParagraphTitle.getData()?has_content> 
211				<h2 class="web-content-paragraph-title">${contactParagraph.contactParagraphTitle.getData()}</h2> 
212			</#if> 
213			<div class="web-content-paragraph-content">${contactParagraph.contactParagraphContent.getData()}</div> 
214			<a class="button contact-button larger-button button-blue" href="${contactPage.getFriendlyUrl()}?source=${sourceUrl}"> 
215                <#if contactParagraph.contactButtonText?? && contactParagraph.contactButtonText.getData()?has_content> 
216                    ${contactParagraph.contactButtonText.getData()} 
217                <#else> 
218                    <@liferay.language key="idewe.contact" /> 
219                </#if> 
220            </a> 
221		</#if> 
222	</div> 
223	<div class="component-pro-relations"> 
224		<div class="centered-content"> 
225			<h2><@liferay.language key="idewe.components.pro.relations" /></h2> 
226			<div class="component-pro-relations-wrapper"> 
227				<#list relatedProArticles as proArticle> 
228					<div class="component-pro-relations-item"> 
229						<img src="/o/liferay-idewe-website-theme/images/fourcomponents/component-${compId}-circle-inv.svg" alt="${compId?upper_case}" /> 
230						<a href="${fullSiteUrl}/-/${proArticle.getUrlTitle()}">${proArticle.getTitle()}</a> 
231					</div> 
232				</#list> 
233			</div> 
234		</div> 
235	</div> 
236	<div class="component-pro-segment"> 
237		<div class="centered-content"> 
238			<div class="web-content-paragraph color-green"> 
239				<h3 class="web-content-paragraph-title">${segmentParagraph.segmentParagraphTitle.getData()}</h3> 
240				<div class="web-content-paragraph-content">${segmentParagraph.segmentParagraphContent.getData()}</div> 
241			</div> 
242			<div class="segment-links"> 
243				<#list segmentList as segmentItem> 
244					<a class="button button-blue-inverted segment-button" href="${segmentItem.getPageHref()}?comp=${compId}"> 
245						${segmentItem.getCategoryLabel()} 
246					</a> 
247				</#list> 
248			</div> 
249		</div> 
250	</div> 
251</div> 
252<script type="text/javascript"> 
253    jQuery(document).ready(function(){ 
254        document.cookie = "idewe-component=${compId?upper_case}; path=/"; 
255        jQuery('html,body').scrollTop(0); 
256    }); 
257</script>