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