Une erreur s'est produite lors du traitement du gabarit.
Java method "be.idewe.portal.website.articles.service.NewsArticleServiceImpl.getExpertData(String, long, Locale, com.liferay.portal.kernel.theme.ThemeDisplay)" threw an exception when invoked on be.idewe.portal.website.articles.service.NewsArticleServiceImpl object "be.idewe.portal.website.articles.service.NewsArticleServiceImpl@682279c0"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: expertData = newsArticleService.getEx...  [in template "20101#20127#IDEWE.TEMPLATE.WEB2.ARTICLE" at line 12, column 1]
	- Reached through: #assign-container  [in template "20101#20127#IDEWE.TEMPLATE.WEB2.ARTICLE" at line 1, column 1]
----
1<#assign 
2newsArticleService = serviceLocator.findService("be.idewe.portal.website.articles.api.NewsArticleService") 
3fileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") 
4articleLanguageService = serviceLocator.findService("be.idewe.portal.website.article.language.api.ArticleLanguageService") 
5journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
6pagesService = serviceLocator.findService("be.idewe.portal.website.pages.api.PagesService") 
7journalArticleId = .vars['reserved-article-id'].getData() 
8 
9article = journalArticleLocalService.getArticle(groupId, journalArticleId) 
10 
11themaList = newsArticleService.getThemas(journalArticleId, groupId) 
12expertData = newsArticleService.getExpertData(expert.getData(), groupId, locale, themeDisplay) 
13relatedNewsList = newsArticleService.getRelatedNews(journalArticleId, 5, 9, groupId, locale) 
14overviewUrl = pagesService.getNieuwsOverzichtUrl(themeDisplay) 
15 
16theme_tooltip_label = languageUtil.get(locale, 'idewe.news.theme.tooltip') 
17 
18themeHashKey = "theme" 
19 
20thisLayout = themeDisplay.getLayout() 
21sourceUrl = themeDisplay.getURLCurrent()?keep_before("?") 
22siteUrl = themeDisplay.getPathFriendlyURLPublic() + thisLayout.getGroup().getFriendlyURL() 
23
24<#if !sourceUrl?starts_with(siteUrl)> 
25    <#assign siteUrl = ''> 
26</#if> 
27<#assign 
28ancestorLayouts = thisLayout.getAncestors() 
29parentLayout = ancestorLayouts[0] 
30parentUrl = siteUrl + parentLayout.getFriendlyURL() 
31 
32breadcrumbsSeparatorClass = 'fas fa-angle-right' 
33
34 
35<#if articleLanguageService.hasLocale(article, locale) > 
36 
37    <#assign 
38    displayDate_data = displayDate.getData() 
39    displayDate_object = dateUtil.parseDate("yyyy-MM-dd", displayDate_data, locale) 
40    displayDate_formatted = dateUtil.getDate(displayDate_object, "d MMMM yyyy", locale) 
41
42 
43    <#macro languageWithArguments key arguments><#compress> 
44        <#assign label><@liferay.language key="${key}" /></#assign> 
45        <#if arguments?is_sequence> 
46            <#list arguments as argument> 
47                <#assign label = label?replace("{" + argument?index + "}", argument)> 
48            </#list> 
49        <#else> 
50            <#assign label = label?replace("{0}", arguments)> 
51        </#if> 
52        ${label} 
53    </#compress></#macro> 
54    <#macro prettyPrintFileSize bytes><#compress> 
55        <#assign kib = bytes?number / 1024> 
56        <#if kib &gt; 1 > 
57            <#assign mib = kib / 1024> 
58            <#if mib &gt; 1 > 
59                <#assign gib = mib / 1024> 
60                <#if gib &gt; 1 > 
61                    ${gib?string["0.#"]?replace(".", ",")} <@liferay.language key="idewe.file.size.gib" /> 
62                <#else> 
63                    ${mib?string["0.#"]?replace(".", ",")} <@liferay.language key="idewe.file.size.mib" /> 
64                </#if> 
65            <#else> 
66                ${kib?string["0.#"]?replace(".", ",")} <@liferay.language key="idewe.file.size.kib" /> 
67            </#if> 
68        <#else> 
69            ${bytes} <@liferay.language key="idewe.file.size.b" /> 
70        </#if> 
71    </#compress></#macro> 
72    <div class="news-article-breadcrumbs centered-content"> 
73        <nav id="breadcrumbs"> 
74            <ul class="breadcrumbs"> 
75                <#list ancestorLayouts?reverse as ancestorLayout> 
76                    <#assign nodeUrl = siteUrl + ancestorLayout.getFriendlyURL()> 
77                    <li> 
78                        <#if ancestorLayout?index != 0> 
79                            <i class="${breadcrumbsSeparatorClass}"></i> 
80                        </#if> 
81                        <a href="${nodeUrl}">${htmlUtil.escape(ancestorLayout.getName(locale))}</a> 
82                    </li> 
83                </#list> 
84                <li> 
85                    <i class="${breadcrumbsSeparatorClass}"></i> 
86                    ${.vars['reserved-article-title'].getData()} 
87                </li> 
88            </ul> 
89        </nav> 
90    </div> 
91    <div class="news-article"> 
92        <div class="news-article-top-wrapper centered-content"> 
93            <h1 id="${companyId}_Top">${.vars['reserved-article-title'].getData()}</h1> 
94            <div class="news-article-header"> 
95                <span class="news-article-date">${displayDate_formatted}</span> 
96                <span class="header-separator">-</span> 
97                <span class="news-article-themes"> 
98                <#list themaList as thema> 
99                    <#if thema?index != 0><span class="theme-separator">|</span></#if> 
100                    <a class="theme-link" 
101                       title="<@languageWithArguments key="idewe.news.theme.tooltip" arguments="${thema.getTitle(locale)}" />" 
102                       href="${parentUrl}#${themeHashKey}=${thema.getTitle(locale)?url('UTF-8')}">${thema.getTitle(locale)}</a> 
103                </#list> 
104            </span> 
105            </div> 
106            <#if expertData?? && expertData.name?has_content> 
107                <div class="news-article-expert"> 
108                    <div class="news-article-expert-image"> 
109                        <div class="news-article-expert-image-crop"> 
110                            <img alt="${expertData.photoAlt}" src="${expertData.photoSrc}"/> 
111                        </div> 
112                    </div> 
113                    <div class="news-article-expert-details"> 
114                        <p><@liferay.language key="idewe.news.expert" /> ${expertData.prefix} ${expertData.name}</p> 
115                        <p>${expertData.function}</p> 
116                    </div> 
117                </div> 
118            </#if> 
119            <#if subTitle.getData()?has_content> 
120                <h2>${subTitle.getData()}</h2> 
121            </#if> 
122            <p class="news-article-summary">${summary.getData()}</p> 
123            <#if paragraph?has_content> 
124                <#list paragraph.getSiblings() as paragraphItem> 
125                    <div class="web-content-paragraph clearfix"> 
126                        <h2 class="web-content-paragraph-title">${paragraphItem.paragraphTitle.getData()}</h2> 
127                        <#if paragraphItem.paragraphImage?? && paragraphItem.paragraphImage.paragraphImageAlignment?? && paragraphItem.paragraphImage.paragraphImageAlignment.getData() != ""> 
128                            <#assign imageAlignment = paragraphItem.paragraphImage.paragraphImageAlignment.getData()> 
129                        <#else> 
130                            <#assign imageAlignment = "left"> 
131                        </#if> 
132                        <#if paragraphItem.paragraphImage.paragraphImageFile?? && paragraphItem.paragraphImage.paragraphImageFile.getData() != ""> 
133                            <#if paragraphItem.paragraphImage.paragraphImageWidth?? && paragraphItem.paragraphImage.paragraphImageWidth.getData() != ""> 
134                                <#assign imageWidth = paragraphItem.paragraphImage.paragraphImageWidth.getData()> 
135                            <#else> 
136                                <#assign imageWidth = "full"> 
137                            </#if> 
138                            <div class="web-content-paragraph-image alignment-${imageAlignment} width-${imageWidth} wow fadeIn"> 
139                                <#if paragraphItem.paragraphImage.paragraphImageDownload?has_content && paragraphItem.paragraphImage.paragraphImageDownload.getData()?has_content> 
140                                    <#assign 
141                                    filePathArray = paragraphItem.paragraphImage.paragraphImageDownload.getData()?keep_before("?")?split("/") 
142                                    fileEntry = fileEntryService.getFileEntryByUuidAndGroupId(filePathArray[5], filePathArray[2]?number) 
143                                    fileExtension = fileEntry.getExtension() 
144                                    fileSize = fileEntry.getSize() 
145
146 
147                                    <div class="dl-wrapper"> 
148                                        <a class="dl-link" 
149                                           href="${paragraphItem.paragraphImage.paragraphImageDownload.getData()}" 
150                                           target="_blank"> 
151                                            <span class="dl-overlay fa-stack fa-2x"> 
152                                                <i class="fas fa-circle fa-stack-2x dl-background"></i> 
153                                                <i class="fas fa-download fa-stack-1x dl-icon"></i> 
154                                            </span> 
155                                            <span class="dl-text">(${fileExtension} - <@prettyPrintFileSize bytes="${fileSize?number}" />)</span> 
156                                        </a> 
157                                    </div> 
158                                </#if> 
159 
160                                <img alt="${paragraphItem.paragraphImage.paragraphImageFile.getAttribute("alt")}" 
161                                     src="${paragraphItem.paragraphImage.paragraphImageFile.getData()}"/> 
162                            </div> 
163                        </#if> 
164                        <div class="web-content-paragraph-content alignment-${imageAlignment}">${paragraphItem.paragraphContent.getData()}</div> 
165                    </div> 
166                </#list> 
167            </#if> 
168            <#if download.getSiblings()?first.downloadFile.getData()?has_content> 
169                <div class="news-article-downloads"> 
170                    <h2 id="${companyId}_Downloads"><@liferay.language key="idewe.news.downloads" /></h2> 
171                    <ul class="news-article-downloads"> 
172                        <#list download.getSiblings() as downloadItem> 
173                            <#if downloadItem.downloadTitle.getData()?has_content> 
174                                <#assign 
175                                filePathArray = downloadItem.downloadFile.getData()?keep_before("?")?split("/") 
176                                fileEntry = fileEntryService.getFileEntryByUuidAndGroupId(filePathArray[5], filePathArray[2]?number) 
177                                fileExtension = fileEntry.getExtension() 
178                                fileSize = fileEntry.getSize() 
179
180                                <li class="news-article-download ext-${fileExtension}"> 
181                                    <a href="${downloadItem.downloadFile.getData()}">${downloadItem.downloadTitle.getData()}</a> 
182                                    <span class="news-article-download-details">(${fileExtension} - <@prettyPrintFileSize bytes="${fileSize?number}" />)</span> 
183                                </li> 
184                            </#if> 
185                        </#list> 
186                    </ul> 
187                </div> 
188            </#if> 
189        </div> 
190 
191        <#assign actionBarPortletPreferencesMap = {"portletSetupPortletDecoratorId" : "barebone"} /> 
192        <@liferay_portlet["runtime"] 
193        defaultPreferences=freeMarkerPortletPreferences.getPreferences(actionBarPortletPreferencesMap) 
194        portletName="com_liferay_journal_content_web_portlet_JournalContentPortlet" 
195        instanceId="ACTION_BAR_NEWS" 
196        /> 
197 
198        <#assign 
199        listSize = relatedNewsList?size 
200        aantalCol1 = (listSize / 3)?ceiling 
201        aantalCol2 = (listSize / 3)?round 
202        aantalCol3 = (listSize / 3)?floor 
203
204        <#if relatedNewsList?? && (listSize > 0)> 
205            <div class="centered-content"> 
206                <div class="related-news row"> 
207                    <div class="col-md-12"><h2><@liferay.language key="idewe.news.related" /></h2></div> 
208                    <#list relatedNewsList as relatedNewsArticle> 
209                        <#if relatedNewsArticle?index = 0 
210                        || relatedNewsArticle?index = aantalCol1 
211                        || relatedNewsArticle?index = aantalCol1 + aantalCol2> 
212                            <div class="col-md-4"> 
213                            <ul> 
214                        </#if> 
215                        <li> 
216                            <i class="fa fa-angle-right"></i> 
217                            <a href="${relatedNewsArticle.getArticleUrl()}">${relatedNewsArticle.getTitle()}</a> 
218                        </li> 
219                        <#if relatedNewsArticle?index = aantalCol1 - 1 
220                        || relatedNewsArticle?index = aantalCol1 + aantalCol2 - 1 
221                        || relatedNewsArticle?index = listSize - 1> 
222                            </ul> 
223                            </div> 
224                        </#if> 
225                    </#list> 
226                </div> 
227            </div> 
228        </#if> 
229    </div> 
230<#else> 
231    <script type="text/javascript"> 
232        jQuery(document).ready(function () { 
233            window.location.replace("${overviewUrl}"); 
234        }); 
235    </script> 
236</#if> 
237<script type="text/javascript"> 
238    jQuery(document).ready(function () { 
239        function fadeBox() { 
240            jQuery('.fadeIn').each(function (i) { 
241                var top_of_object = jQuery(this).position().top; 
242                var bottom_of_window = jQuery(window).scrollTop() + jQuery(window).height(); 
243                if (top_of_object < bottom_of_window) { 
244                    jQuery(this).animate({'opacity': '1'}, 1500); 
245
246            }); 
247
248 
249        function scrollToTop() { 
250            jQuery('html,body').scrollTop(0); 
251
252 
253        scrollToTop(); 
254        setTimeout(function () { 
255            scrollToTop(); 
256            window.addEventListener("scroll", fadeBox); 
257            fadeBox(); 
258        }, 200); 
259    }); 
260</script>