Une erreur s'est produite lors du traitement du gabarit.
Java method "com.sun.proxy.$Proxy507.getJournalArticle(long, String)" threw an exception when invoked on com.sun.proxy.$Proxy507 object "com.suez.openresource.service.impl.SuezTemplateLocalServiceImpl@3abe87f"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign article = suezTemplateService...  [in template "20116#20152#SUEZ_ARTICLE_PAGE_TPL" at line 11, column 1]
----
1<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()> 
2<#assign themeDisplay = serviceContext.getThemeDisplay() /> 
3<#assign portalURL = themeDisplay.getURLPortal() /> 
4<#assign userTimeZone = themeDisplay.getUser().getTimeZone()> 
5 
6<#assign articleTitle = .vars['reserved-article-title'].getData()> 
7 
8<#assign articleId = .vars['reserved-article-id'].getData()> 
9 
10<#assign suezTemplateService = serviceLocator.findService("com.suez.openresource.service.SuezTemplateLocalService")> 
11<#assign article = suezTemplateService.getJournalArticle(groupId, articleId)> 
12<#assign dateString = .vars['reserved-article-display-date'].getData()> 
13<#assign articlePubDate = suezTemplateService.formatShortDate(dateString, userTimeZone)> 
14<#assign categories = suezTemplateService.getArticleCategoriesSortedByTitle(article, "CONTENT_CATEGORIES", groupId, locale)> 
15<#assign tagCat = suezTemplateService.getArticleCategoriesSortedByTitle(article, "SECTION_CATEGORIES", groupId, locale)> 
16<#assign tags = suezTemplateService.getArticleTagsSortedByName(article, groupId)> 
17 
18<#assign author = suezTemplateService.getAuthorByJournalArticle(groupId, themeDisplay, article)!""> 
19 
20<#assign articleUrl = portalURL + suezTemplateService.getArticleDetailsPageUrl(article)> 
21 
22<#assign twitterCookiesEnabled = suezTemplateService.isTwitterCookiesEnabled(serviceContext.getRequest())> 
23<#assign facebookCookiesEnabled = suezTemplateService.isFacebookCookiesEnabled(serviceContext.getRequest())> 
24<#assign linkedinCookiesEnabled = suezTemplateService.isLinkedinCookiesEnabled(serviceContext.getRequest())> 
25 
26<section class="article detailed-page-main-section"> 
27   <article class="wrapper-container small-size"> 
28        <header class="detailed-page-header reset"> 
29            <ul class="categories-list"> 
30                <#assign counter = 0> 
31                <#list categories as category> 
32                    <#assign counter = counter+1> 
33                    <#if counter &lt; 6> 
34                        <#assign searchUrl = suezTemplateService.getCategorySearchLink(category, locale)> 
35                        <#if category.getTitle(locale) != ''> 
36                            <li> 
37                                <a href="${searchUrl}" class="categorie-label"><i class="icon-tag"></i> ${category.getTitle(locale)}</a> 
38                            </li> 
39                        </#if> 
40                    </#if> 
41                </#list> 
42            </ul> 
43            <h1 class="detailed-page-title">${articleTitle}</h1> 
44 
45            <div class="detailed-page-infos clearfix"> 
46                <#assign authorDate = suezTemplateService.formatShortDate(dateString, locale, userTimeZone)> 
47                ${suezTemplateService.getProfileDisplay(author, "article-details", authorDate, locale)} 
48 
49                <#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()> 
50                <#assign themeDisplay = serviceContext.getThemeDisplay() /> 
51                <#assign journalArticle = suezTemplateService.getJournalArticle(scopeGroupId, .vars['reserved-article-id'].getData())> 
52                <#assign className = suezTemplateService.getClassName(journalArticle)> 
53                <#assign classPK = suezTemplateService.getRatingStatsClassPk(journalArticle)> 
54                <#assign totalScore = suezTemplateService.getContentTotalScore(journalArticle)> 
55                <#if totalScore??> 
56                <#else> 
57                    <#assign totalScore = 0> 
58                </#if> 
59                <#assign isLike = suezTemplateService.didTheUserVoted(themeDisplay.getUserId(), journalArticle)> 
60 
61                <ul class="detailed-page-buttons"> 
62                    <#if themeDisplay.isSignedIn()> 
63                        <#assign upvoteButtonCss = ""> 
64                        <#assign upvoteButtonLinkData = "true"> 
65                        <#assign upvoteButtonLink = "#"> 
66                    <#else> 
67                        <#assign upvoteButtonCss = "suez-sign-in"> 
68                        <#assign upvoteButtonLinkData = "false"> 
69                        <#assign upvoteButtonLink = themeDisplay.getURLSignIn()> 
70                    </#if> 
71                    <li class="${upvoteButtonCss}" 
72                        data-init="upvote-button" 
73                        data-button-type="details" 
74                        data-classname="${className}" 
75                        data-classpk="${classPK}" 
76                        data-islike="${isLike?c}" 
77                        data-totalscore="${totalScore}"> 
78                        <a href="${upvoteButtonLink}" data-redirect="${upvoteButtonLinkData}" class="suez-btn with-border transparent-bg normal-size detailed-page-upvote-button js-likes-btn"> 
79                            <span class="likes"> 
80                                <i class="fa fa-heart" aria-hidden="true"></i><@liferay.language key="upvote.button.details.label"/> 
81                            </span> 
82                            <span class="likes2"><i class="fa fa-heart" aria-hidden="true"></i> 
83                            </span> 
84                        </a> 
85                    </li> 
86                </ul> 
87 
88                <ul class="social-sharing-menu"> 
89                   <#assign croppedContent = ""> 
90                   <#if introduction?? && introduction.getData() != ""> 
91                       <#assign croppedContent = suezTemplateService.shorten(introduction.getData(), 150)> 
92                   </#if> 
93                    <#assign shareOnTwitterUrl = suezTemplateService.getTwitterShareUrl(articleUrl)> 
94                    <#assign shareOnLinkedInUrl = suezTemplateService.getLinkedinShareUrl(articleUrl, articleTitle, croppedContent)> 
95                    <#assign shareOnFacebookUrl = suezTemplateService.getFacebookShareUrl(articleUrl)> 
96                    <#assign openSocialCookiesRestrictionPopup = "javascript:openCookiesSettingsPopup()"/> 
97                    <li> 
98                        <a class="suez-btn with-border transparent-bg ${twitterCookiesEnabled?then('', 'disabled-width-active')}" 
99                           data-init="${twitterCookiesEnabled?then('share-popup', '')}" 
100                           data-lang="${locale.getLanguage()}" 
101                           data-text="${articleTitle}" 
102                           data-url="${articleUrl}" 
103                           href="${twitterCookiesEnabled?then(shareOnTwitterUrl, openSocialCookiesRestrictionPopup)}" 
104                           title="<@liferay.language key="suez.social.sharing.on.twitter"/>"> 
105                           <i class="icon-twitter" aria-hidden="true"></i> 
106                        </a> 
107                    </li> 
108                    <li> 
109                        <a class="suez-btn with-border transparent-bg ${linkedinCookiesEnabled?then('', 'disabled-width-active')}" 
110                           data-init="${linkedinCookiesEnabled?then('share-popup', '')}" 
111                           title="<@liferay.language key="suez.social.sharing.on.linkedin"/>" 
112                           href="${linkedinCookiesEnabled?then(shareOnLinkedInUrl, openSocialCookiesRestrictionPopup)}"> 
113                           <i class="icon-linkedin" aria-hidden="true"></i> 
114                        </a> 
115                    </li> 
116                    <li> 
117                        <a class="suez-btn with-border transparent-bg ${facebookCookiesEnabled?then('', 'disabled-width-active')}" 
118                           data-init="${facebookCookiesEnabled?then('share-popup', '')}" 
119                           title="<@liferay.language key="suez.social.sharing.on.facebook"/>" 
120                           href="${facebookCookiesEnabled?then(shareOnFacebookUrl, openSocialCookiesRestrictionPopup)}"> 
121                            
122                           <i class="fa fa-facebook" aria-hidden="true"></i> 
123                        </a> 
124                    </li> 
125                    <li> 
126                        <a class="suez-btn with-border transparent-bg" 
127                           href="mailto:?subject=${articleTitle?url('UTF-8')} 
128                           &body=<@liferay.language key="suez.social.sharing.mail.body"/> ${articleTitle?url('UTF-8')} ${articleUrl}" 
129                           title="<@liferay.language key="suez.social.sharing.by.email"/>"> 
130                           <i class="icon-mail"></i> 
131                        </a> 
132                    </li> 
133                </ul> 
134            <div> 
135 
136            <#if image?? && image.getData() != ""> 
137                <div class="detailed-page-img img-wrapper"> 
138                    <#assign alt = image.getAttribute("alt")> 
139                    <img title="${alt}" alt="${alt}" src="${image.getData()}"/> 
140 
141                </div> 
142 
143                <#assign imageLegendFound = false> 
144                <#if image.getChild("imageLegend")?? && image.getChild("imageLegend")?has_content && image.getChild("imageLegend").getData() != ""> 
145                    <#assign imageLegendFound = true> 
146                    <p class="detailed-page-img-legend">${image.getChild("imageLegend").getData()}</p> 
147                </#if> 
148 
149                <#-- Previously the imageLegend was incorrectly attached to the frontPageImage, 
150                so we need this code in order not to changing all the articles that are already created --> 
151                <#if !imageLegendFound> 
152                    <#if frontPageImage.getChild("imageLegend")?? && frontPageImage.getChild("imageLegend")?has_content && frontPageImage.getChild("imageLegend").getData() != ""> 
153                        <p class="detailed-page-img-legend">${frontPageImage.getChild("imageLegend").getData()}</p> 
154                    </#if> 
155                </#if> 
156 
157            </#if> 
158        </header> 
159 
160        <div class="detailed-page-content"> 
161            <#if introduction?? && introduction.getData() != ""> 
162            <h2 class="detailed-page-introduction">${introduction.getData()}</h2> 
163            </#if> 
164 
165            <#if section?? && section.getSiblings()?has_content> 
166                <#list section.getSiblings() as section_item> 
167                    <h2 class="detailed-page-subtitle">${section_item.getData()}</h2> 
168                    <#if section_item.sectionContent?? && section_item.sectionContent.getData() != ""> 
169                        <div class="rich-text"> 
170                            <p>${suezTemplateService.formatWYSIWYG(section_item.sectionContent.getData(), serviceContext.getRequest())}</p> 
171                        </div> 
172                    </#if> 
173                </#list> 
174            </#if> 
175        </div> 
176 
177            <#if files?? && files.getSiblings()?has_content> 
178                <ul class="downloads-list reset"> 
179                    <#list files.getSiblings() as cur_files> 
180                        <#if cur_files.getData() != ""> 
181                            <#assign fileEntry = suezTemplateService.getFileEntry(cur_files.getData())> 
182                            <#assign fileSize = fileEntry.getSize()> 
183                            <#assign fileSize = suezTemplateService.convertFileSize(fileSize, themeDisplay)> 
184                            <#assign fileExtension = fileEntry.getExtension()> 
185                            <#assign fileName = fileEntry.getTitle()?replace("." + fileExtension, "")> 
186                            <#assign fileDownloadURL = suezTemplateService.getDownloadURL(fileEntry, themeDisplay)> 
187                            <li> 
188                                <p class="download"> 
189                                    <span class="download-document"> 
190                                        <span class="download-document-name">${fileName}</span> 
191                                        <span class="download-document-info"> 
192                                            <span class="download-document-size">${fileSize} <i></i> ${fileExtension}</span> 
193                                            <#assign icoClass = suezTemplateService.getFormatIconClass(fileExtension)> 
194                                            <i class="fa ${icoClass}" aria-hidden="true"></i> 
195                                        </span> 
196                                    </span> 
197                                    <a href="${fileDownloadURL}" class="download-document-button suez-btn" title="${fileEntry.getTitle()} ${fileSize}"><i class="icon-download"></i></a> 
198                                </p> 
199                            </li> 
200                        </#if> 
201                    </#list> 
202                </ul> 
203            </#if> 
204 
205            <div class="detailed-page-content"> 
206                <#if summarySection?? && summarySection.getSiblings()?has_content> 
207                    <#list summarySection.getSiblings() as section_item> 
208                        <h3 class="detailed-page-subtitle">${section_item.getData()}</h3> 
209                        <div class="rich-text"> 
210                            <p>${suezTemplateService.formatWYSIWYG(section_item.summarySectionContent.getData(), serviceContext.getRequest())}</p> 
211                        </div> 
212                    </#list> 
213                </#if> 
214            </div> 
215            <ul class="tags-list reset" data-init="list-show-more"> 
216                <#assign counter = 0> 
217                <#list tagCat as cat> 
218                  <#assign counter = counter+1>                   
219                    <#assign tagClass = ""> 
220                    <#if counter &gt; 5> 
221                        <#assign tagClass = "hidden"> 
222                    </#if> 
223                     <#assign tagSearchUrl = suezTemplateService.getCategorySearchLink(cat, locale)> 
224                    <li class="${tagClass}"><a class="tag-item" href="${tagSearchUrl}">${cat.getTitle(locale)}</a></li> 
225                </#list> 
226                <#if counter &gt; 5> 
227                <li> 
228                    <a href="#"  class="tag-item tag-more" data-content="list-show-more-button"> 
229                        <@liferay_ui["message"] key="suez.article.tags.show" arguments="${counter - 5}"/> 
230                    </a> 
231                </li> 
232                </#if> 
233            </ul> 
234   </article> 
235</section> 

Commentaires: