Une erreur s'est produite lors du traitement du gabarit.
The following has evaluated to null or missing:
==> fileService.fetchDLFileEntryByUuidAndGroupId(vignetteJSON.getString('uuid'), vignetteJSON.getLong('groupId'))  [in template "20099#20136#688905" at line 107, column 50]

----
Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign vignetteFileEntry = fileServi...  [in template "20099#20136#688905" at line 107, column 21]
----
1<div id="sfl-aggregateur-content"> 
2<#-- DELTA : Nombres de résultats par page --> 
3<#assign delta = 5 > 
4 
5<#-- Nom de la structure des contenus à afficher --> 
6<#assign structureName = "Blogue" > 
7 
8<#assign serverName = themeDisplay.getServerName() > 
9<#assign virtualHost = (virtualHostLocalService.fetchVirtualHost(serverName))! > 
10<#assign isVirtualHost = (virtualHost?has_content && (virtualHost.getLayoutSetId() != 0)) >    
11 
12<#if entries?has_content > 
13    <#assign blogueVedetteFlag = true > 
14    <#if locale == "fr_CA" > 
15        <#assign lireArticleTexte = "Lire l'article" > 
16        <#assign lireVideoTexte = "Visionner la vidéo" > 
17        <#assign precedant = "Précédent" > 
18        <#assign suivant = "Suivant" > 
19        <#assign pagesResultats = "pages de résultats" > 
20        <#assign premierePageTexte = "Première page"> 
21        <#assign dernierePageTexte = "Dernière page" > 
22        <#assign motDe = "de" > 
23    <#else> 
24        <#assign lireArticleTexte = "Read more" > 
25        <#assign lireVideoTexte = "Watch video" > 
26        <#assign precedant = "Previous" > 
27        <#assign suivant = "Next" > 
28        <#assign pagesResultats = "pages of results" > 
29        <#assign premierePageTexte = "First page" > 
30        <#assign dernierePageTexte = "Last page" > 
31        <#assign motDe = "of" > 
32    </#if> 
33    <div class="blog-hub-container"> 
34        <ul class="blog-hub blog-list list-unstyled"> 
35            <#list entries as curEntry> 
36 
37                <#assign renderer = curEntry.getAssetRenderer() > 
38                <#assign className = renderer.getClassName() > 
39                <#function RetournerUrlSansWebSfl url> 
40                    <#if url?contains("/web/sfl-staging")> 
41                        <#assign url = url?replace("/web/sfl-staging","")> 
42                    </#if> 
43                    <#if url?contains("/web/sfl")> 
44                        <#assign url = url?replace("/web/sfl","")> 
45                    </#if> 
46                    <#return url> 
47                </#function> 
48                <#if className?contains("JournalArticle")> 
49                    <#assign journalArticle = renderer.getArticle() > 
50                    <#assign document = saxReaderUtil.read(journalArticle.getContentByLocale(locale.toString())) > 
51 
52                    <#assign link = renderer.getURLViewInContext(renderRequest, renderResponse, "") > 
53                    <#if link?contains("/web/sfl-staging")> 
54                        <#assign link = link?replace("/web/sfl-staging","")> 
55                    </#if> 
56                    <#if link?contains("/web/sfl")> 
57                        <#assign link = link?replace("/web/sfl","")> 
58                    </#if> 
59 
60                    <#assign node = document.selectSingleNode("/root/dynamic-element[@name='titreBlogueAggregateur']/dynamic-content") > 
61                    <#assign titreBlogueAggregateur = node.getText() > 
62 
63                    <#assign node = document.selectSingleNode("/root/dynamic-element[@name='vignetteBlogueAggregateur']/dynamic-content") > 
64                    <#assign vignetteBlogueAggregateur = node.getText() > 
65 
66                    <#assign node = document.selectSingleNode("/root/dynamic-element[@name='descriptionBlogueAggregateur']/dynamic-content") > 
67                    <#assign descriptionBlogueAggregateur = node.getText() > 
68 
69                    <#assign node = document.selectSingleNode("/root/dynamic-element[@name='titreBlogue']/dynamic-content") > 
70                    <#assign titreBlogue = node.getText() > 
71 
72                    <#assign node = document.selectSingleNode("/root/dynamic-element[@name='imageBlogue']/dynamic-content") > 
73                    <#assign imageBlogue = node.getText() > 
74 
75                    <#assign node = document.selectSingleNode("/root/dynamic-element[@name='video']/dynamic-element[@name='idYoutube']/dynamic-content") > 
76                    <#assign video = node.getText() > 
77 
78                    <#if blogueVedetteFlag > 
79                        <#assign blogueVedetteFlag = false > 
80                        <#assign blogFeatureClass = "blog-featured" > 
81                    <#else> 
82                        <#assign blogFeatureClass = "" > 
83                        <#assign descriptionBlogueAggregateur = "" > 
84                    </#if> 
85 
86                    <#if video?has_content > 
87                        <#assign blogVideoClass = "blog-video" > 
88                        <#assign ctaTexte = lireVideoTexte > 
89                    <#else> 
90                        <#assign blogVideoClass = "" > 
91                        <#assign ctaTexte = lireArticleTexte > 
92                    </#if> 
93 
94                    <#if titreBlogueAggregateur?has_content > 
95                        <#assign  texteTitreBlogue = titreBlogueAggregateur > 
96                    <#else> 
97                        <#assign  texteTitreBlogue = titreBlogue > 
98                    </#if> 
99 
100                    <#if vignetteBlogueAggregateur?has_content > 
101                        <#assign srcVignetteImg = vignetteBlogueAggregateur > 
102                    <#else> 
103                        <#assign srcVignetteImg = imageBlogue > 
104                    </#if> 
105 
106                    <#assign vignetteJSON = jsonFactoryUtil.createJSONObject(srcVignetteImg) /> 
107                    <#assign vignetteFileEntry = fileService.fetchDLFileEntryByUuidAndGroupId(vignetteJSON.getString('uuid'), vignetteJSON.getLong('groupId')) /> 
108                    <#assign fileURL = themeDisplay.getPathContext() + "/documents/" + vignetteFileEntry.getRepositoryId()?c + "/" + vignetteFileEntry.getFolderId()?c + "/" + urlCodec.encodeURL(htmlUtil.unescape(vignetteFileEntry.getTitle()), true) + "/" + vignetteFileEntry.getUuid() /> 
109                    <#assign srcVignetteImg = fileURL /> 
110 
111                    <li class="blog-item ${blogVideoClass!} ${blogFeatureClass!}"> 
112                        <div class="blog-text"> 
113                            <h2 class="blog-title"> 
114                                <a data-senna-off="true" href="${RetournerUrlSansWebSfl(link)}" class="blog-link">${texteTitreBlogue}</a> 
115                            </h2> 
116                            <#if descriptionBlogueAggregateur?has_content > 
117                                <p class="blog-desc">${descriptionBlogueAggregateur}</p> 
118                            </#if> 
119                            <span class="blog-cta" aria-hidden="true">${ctaTexte}</span> 
120                        </div> 
121                        <div class="blog-img"> 
122                            <img src="${srcVignetteImg}" alt=""> 
123                        </div> 
124                    </li> 
125 
126                </#if> 
127            </#list> 
128 
129        </ul> 
130    </div> 
131</#if> 
132 
133<#assign structures = ddmStructureLocalService.getStructures(groupId) > 
134 
135<#list structures as str> 
136    <#if str.getName("fr_CA") == structureName > 
137        <#assign structureKey = str.getStructureKey() > 
138        <#assign structureId = str.getStructureId() > 
139    </#if> 
140</#list> 
141 
142<#assign countTag = renderRequest.getAttribute("assetsCount") > 
143 
144<#assign  numNews = countTag > 
145 
146<#assign cur = "" > 
147<#if renderRequest.getParameter("cur")?has_content > 
148    <#assign cur = renderRequest.getParameter("cur") > 
149</#if> 
150<#assign extraNews = numNews % delta > 
151<#if  cur == "" || getterUtil.getInteger(cur) == 1 > 
152    <#assign page = 1 > 
153<#else> 
154    <#assign page = getterUtil.getInteger(cur) > 
155</#if> 
156 
157<#if (numNews > delta) > 
158    <#if  extraNews == 0 > 
159        <#assign totalPages = (numNews / delta) > 
160    <#else> 
161        <#assign totalPages = (numNews / delta) + 1 > 
162    </#if> 
163<#else> 
164    <#assign totalPages = 1 > 
165</#if> 
166 
167<#if (page < 3) > 
168    <#assign pointer = 3 > 
169<#elseif (page > totalPages - 2) > 
170    <#assign pointer = totalPages - 2 > 
171<#else> 
172    <#assign Integer = 0 > 
173    <#assign pointer = getterUtil.getInteger(cur) > 
174</#if> 
175 
176<#assign start = pointer - 2 > 
177<#if start < 1 > 
178    <#assign start = 1 > 
179</#if> 
180<#assign end = pointer + 2 > 
181<#if (end > totalPages) > 
182    <#assign end = totalPages > 
183</#if> 
184 
185<#assign end = getterUtil.getInteger(end) > 
186<#assign totalPages = getterUtil.getInteger(totalPages) > 
187 
188<#-- Set pagination URL --> 
189<#-- portletURLFactory.create(javax.servlet.http.HttpServletRequest request, String portletId, long plid, String lifecycle) --> 
190<#assign paginationBaseURL = portletURLFactory.create(request, themeDisplay.getPortletDisplay().getId(), themeDisplay.getPlid(), "RENDER_PHASE") > 
191${(paginationBaseURL.setPortletMode("view"))} 
192${(paginationBaseURL.setWindowState("normal"))} 
193${(paginationBaseURL.setParameter("delta", delta?string))} 
194<#if paramCategoryId?has_content > 
195    ${paginationBaseURL.setParameter("categoryId", paramCategoryId?string)} 
196</#if> 
197${(paginationBaseURL.setParameter("advancedSearch", "false"))} 
198${(paginationBaseURL.setParameter("andOperator", "true"))} 
199${(paginationBaseURL.setParameter("resetCur", "false"))} 
200${(paginationBaseURL.setParameter("sfl-senna-route", "true"))} 
201 
202<#assign ppid = themeDisplay.getPortletDisplay().getId() > 
203 
204<nav class="navPagination" aria-label="${totalPages} ${(pagesResultats)!}"> 
205<ul class="pagination"> 
206        <#if (page > 1) > 
207            <li class="page-item visible-xs-inline"> 
208                                ${(paginationBaseURL.setParameter("cur", "1"))} 
209                 
210                <#assign paginationBaseURLStr = paginationBaseURL?string > 
211                <#if paginationBaseURLStr?contains("/web/sfl-staging")> 
212                        <#assign paginationBaseURLStr = paginationBaseURLStr?replace("/web/sfl-staging","")> 
213                    </#if> 
214                    <#if paginationBaseURLStr?contains("/web/sfl")> 
215                        <#assign paginationBaseURLStr = paginationBaseURLStr?replace("/web/sfl","")> 
216                    </#if> 
217                <a data-senna-sfl="true" href="${paginationBaseURLStr}#sfl-aggregateur-content" class="page-link first" role="button"> 
218                    <span class="sr-only">${(premierePageTexte)!}</span> 
219                </a> 
220            </li> 
221            <li class="page-item"> 
222                                <#assign previousPageNumber = page - 1 > 
223                                ${(paginationBaseURL.setParameter("cur", previousPageNumber?string))} 
224 
225                <#assign paginationBaseURLStr = paginationBaseURL?string > 
226                <#if paginationBaseURLStr?contains("/web/sfl-staging")> 
227                        <#assign paginationBaseURLStr = paginationBaseURLStr?replace("/web/sfl-staging","")> 
228                    </#if> 
229                    <#if paginationBaseURLStr?contains("/web/sfl")> 
230                        <#assign paginationBaseURLStr = paginationBaseURLStr?replace("/web/sfl","")> 
231                    </#if> 
232                <a data-senna-sfl="true" href="${paginationBaseURLStr}#sfl-aggregateur-content" class="btn btn-default precedent page-link" role="button"><span class="hidden-xs">${(precedant)!}</span></a> 
233            </li> 
234        </#if> 
235 
236        <li class="page-item visible-xs-inline"> 
237            <span class="page-link text"><span class="sr-only">Page </span>${page} ${(motDe)!} ${totalPages}</span> 
238        </li> 
239 
240        <#if (totalPages > 1) > 
241            <#list start..end as i > 
242                <#if i != page > 
243                    <li class="page-item hidden-xs"> 
244                                                ${(paginationBaseURL.setParameter("cur", i?string))} 
245 
246                        <#assign paginationBaseURLStr = paginationBaseURL?string > 
247                        <#if paginationBaseURLStr?contains("/web/sfl-staging")> 
248                        <#assign paginationBaseURLStr = paginationBaseURLStr?replace("/web/sfl-staging","")> 
249                    </#if> 
250                    <#if paginationBaseURLStr?contains("/web/sfl")> 
251                        <#assign paginationBaseURLStr = paginationBaseURLStr?replace("/web/sfl","")> 
252                    </#if> 
253                        <a data-senna-sfl="true" href="${paginationBaseURLStr}#sfl-aggregateur-content" class="page-link number" aria-pressed="false" aria-controls="table" role="button"><span class="sr-only">Page </span>${i}</a> 
254                    </li> 
255                <#else> 
256                    <li class="page-item active hidden-xs"> 
257                        <a data-senna-sfl="true" href="#" class="page-link number selected" tabindex="0" aria-pressed="true" aria-controls="table" role="button"><span class="sr-only">Page </span>${page}</a> 
258                    </li> 
259                </#if> 
260            </#list> 
261        </#if> 
262 
263        <#if (page < totalPages) > 
264            <li class="page-item"> 
265                                <#assign nextPageNumber = page + 1 > 
266                                ${(paginationBaseURL.setParameter("cur", nextPageNumber?string))} 
267                <#assign paginationBaseURLStr = paginationBaseURL?string > 
268                <#if paginationBaseURLStr?contains("/web/sfl-staging")> 
269                        <#assign paginationBaseURLStr = paginationBaseURLStr?replace("/web/sfl-staging","")> 
270                    </#if> 
271                    <#if paginationBaseURLStr?contains("/web/sfl")> 
272                        <#assign paginationBaseURLStr = paginationBaseURLStr?replace("/web/sfl","")> 
273                    </#if> 
274                <a data-senna-sfl="true" href="${paginationBaseURLStr}#sfl-aggregateur-content" class="btn btn-default suivant page-link" role="button"><span class="hidden-xs">${(suivant)!} </span></a> 
275            </li> 
276            <li class="page-item visible-xs-inline"> 
277                                ${(paginationBaseURL.setParameter("cur", totalPages?string))} 
278                <#assign paginationBaseURLStr = paginationBaseURL?string > 
279                <#if paginationBaseURLStr?contains("/web/sfl-staging")> 
280                        <#assign paginationBaseURLStr = paginationBaseURLStr?replace("/web/sfl-staging","")> 
281                    </#if> 
282                    <#if paginationBaseURLStr?contains("/web/sfl")> 
283                        <#assign paginationBaseURLStr = paginationBaseURLStr?replace("/web/sfl","")> 
284                    </#if> 
285                <a data-senna-sfl="true" href="${paginationBaseURLStr}#sfl-aggregateur-content" class="page-link last" role="button"> 
286                    <span class="sr-only">${(dernierePageTexte)!}</span> 
287                </a> 
288            </li> 
289        </#if> 
290</ul> 
291</nav> 
292<script type="text/javascript"> 
293    //code executé lorsqu'on navigue dans les blogues et les catégorie 
294    if (typeof editBlogItems !== "undefined") { 
295        editBlogItems(); 
296
297    //code executé seulement au chargement de la page 
298    document.addEventListener('blogMethodReady', function (elem) { 
299        editBlogItems(); 
300    }, false); 
301 
302</script> 
303</div>