Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing:
==> cardImageJson.groupId  [in template "20096#20121#CONFINDUSTRIA-ARTICOLO-REDAZIONALE" at line 26, column 22]

----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to 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: cardImageGroupId = cardImageJson.groupId  [in template "20096#20121#CONFINDUSTRIA-ARTICOLO-REDAZIONALE" at line 26, column 3]
----
1<#include "${templatesPath}/MACRO-CONFINDUSTRIA" /> 
2 
3<#assign journalLocalService = serviceLocator.findService('com.liferay.journal.service.JournalArticleLocalService') /> 
4<#assign assetEntryLocalService = serviceLocator.findService('com.liferay.asset.kernel.service.AssetEntryLocalService') /> 
5 
6<#assign 
7  articleid = .vars['reserved-article-id'].data 
8  journalArticle = journalLocalService.getArticle(groupId, articleid) 
9  classPK = journalArticle.resourcePrimKey?number 
10  assetEntry = assetEntryLocalService.getEntry('com.liferay.journal.model.JournalArticle',classPK) 
11  categories = assetEntry.getCategories() 
12  areeCategories = confindustria_template_tool.getAreeTematiche(categories) 
13  materieCategories = confindustria_template_tool.getMaterie(categories) 
14  tags = assetEntry.getTags() 
15  viewCount = assetEntry.viewCount 
16 
17  displaydate = journalArticle.getDisplayDate()?datetime 
18  displaydate = confindustria_template_tool.getDateFormattedDetailBy(displaydate?string("dd MMMMM yyyy"), "dd MMMMM yyyy", locale) 
19	 
20  item = confindustria_template_tool.getDDMJournalArticleValuesMap(classPK, locale) 
21  title=item.title.value 
22  abstract=item.abstract.value 
23  text=item.text.value 
24  cardImageOri = item.image.value 
25  cardImageJson = jsonFactoryUtil.createJSONObject(cardImageOri) 
26  cardImageGroupId = cardImageJson.groupId 
27  cardImageUuid = cardImageJson.uuid 
28  cardImageWidth = cardImageJson.width 
29  cardImageHeight = cardImageJson.height 
30  coverImage = confindustria_template_tool.getDDMImageURL(cardImageUuid,cardImageGroupId?number,themeDisplay) 
31  fileEntryImage = confindustria_template_tool.getFileEntry(cardImageUuid,cardImageGroupId?number,themeDisplay) 
32  entryId = fileEntryImage.getFileEntryId() 
33  fileName = fileEntryImage.getFileName() 
34  hideDisplayDate = getterUtil.getBoolean(hideDisplayDate.getData()) 
35/> 
36 
37<#assign 
38   contentVisible = false 
39   publicArticle=item.public.value 
40/> 
41<#if publicArticle?boolean == true> 
42  <#assign contentVisible = true/> 
43<#elseif isLoggedIn == true> 
44  <#assign contentVisible = confindustria_template_tool.canViewContent(themeDisplay.getUserId(),areeCategories, themeDisplay)/> 
45</#if> 
46 
47<article> 
48  <div class="box-page-name d-flex align-items-center"> 
49    <div class="container"> 
50      <div class="row"> 
51        <div class="col-12 col-md-10 col-lg-8"> 
52          <h1 class="box-page-name__title">${title}</h1> 
53        </div> 
54      </div> 
55    </div> 
56  </div> 
57 
58  <#-- Info --> 
59  <div class="box-info"> 
60    <div class="container"> 
61      <div class="row"> 
62        <div class="col-12"> 
63          <div class="d-flex flex-column flex-md-row justify-content-md-between align-items-md-end"> 
64            <div> 
65              <#if displaydate?? && displaydate != "" && !hideDisplayDate> 
66                <div class="box-info__date">${displaydate}</div> 
67              </#if> 
68              <div class="d-flex align-items-center"> 
69                <#if areeCategories?size gt 0> 
70                  <#list areeCategories as area> 
71                   <div class="box-info__category">${area.getTitle(locale)}</div> 
72                  </#list> 
73                </#if> 
74                <#if materieCategories?size gt 0> 
75                  <div class="box-info__materia"> 
76                    <span>${(materieCategories?size == 1)?then(languageUtil.get(locale, "confindustria.materia"), languageUtil.get(locale, "confindustria.materie"))}:</span> 
77                    <#list materieCategories as mat> 
78                      ${mat.getTitle(locale)} 
79                    </#list> 
80                  </div> 
81                </#if> 
82              </div> 
83            </div> 
84          </div> 
85        </div> 
86      </div> 
87    </div> 
88  </div> 
89 
90  <#-- Articolo --> 
91  <div class="container"> 
92    <div class="row"> 
93      <div class="col-12 col-lg-8 ${(contentVisible == false)?then('col-reserved','')}"> 
94        <div class="article"> 
95          <#if contentVisible == false> 
96            <#-- Non sono loggato: popup login contenuto riservato--> 
97            <#if isLoggedIn == false> 
98              <#include "${templatesPath}/CONFINDUSTRIA-PRIVATE-CONTENT-LOGIN" /> 
99            <#elseif contentVisible == false> 
100              <#include "${templatesPath}/CONFINDUSTRIA-PRIVATE-CONTENT-CATEGORY-MESSAGE" /> 
101            </#if> 
102          </#if> 
103          <#-- Immagine --> 
104          <#if coverImage?? && coverImage != ""> 
105            <img src="/o/adaptive-media/adapt-image/${entryId}/${fileName}?w=${cardImageWidth}&h=${cardImageHeight}&q=100&fm=webp" alt="${cardImageJson.alt}" class="article__img w-100" /> 
106          </#if> 
107          <#-- Abstract --> 
108          <#if contentVisible == true && abstract?? && abstract != ""> 
109            <div class="article__intro">${abstract}</div> 
110          </#if> 
111          <#--  Bodytext (sono loggato) --> 
112          <#if contentVisible == true > 
113            <#if text?? && text != ""> 
114              <div class="article__text">${text}</div> 
115            </#if> 
116          </#if> 
117        </div> 
118      </div> 
119 
120      <#--  Allegati (sono loggato) --> 
121      <#if contentVisible == true > 
122        <div class="col-12 col-lg-4"> 
123          <#if groupDocuments.getSiblings()[0].document.getData() != ""> 
124            <div class="article__info"> 
125              <div class="article__label"><@liferay.language key="confindustria.attachments" /></div> 
126              <#list groupDocuments.getSiblings() as allegato> 
127                <#if allegato.document.getData() != ""> 
128                    <#assign 
129                        allegatoMap = allegato.document['data']?eval 
130                        allegatoTitle = allegatoMap['title'] 
131                    /> 
132                    <div class="mb-3"> 
133                      <a href="${allegato.document.getData()}" title="${allegatoTitle}" class="article__attachments d-flex align-items-start"> 
134                          <svg class="ico-svg add"> 
135                              <use xlink:href="${themeIconsPath}#arrow-down-to-line-light"></use> 
136                          </svg> 
137                          <span>${allegatoTitle}</span> 
138                      </a> 
139                    </div> 
140                </#if> 
141              </#list> 
142            </div> 
143          </#if> 
144					<#if groupLink.getSiblings()[0].link.getData() != ""> 
145            <div class="article__info"> 
146				      <div class="article__label"><@liferay.language key="confindustria.links" /></div> 
147              <#list groupLink.getSiblings() as cur_link_esterni> 
148                <#if cur_link_esterni.titleLink.getData() !="" && cur_link_esterni.link.getData() !=""> 
149                   <div class="mb-3"> 
150                     <a href="${cur_link_esterni.link.getData()}" title="Scarica ${cur_link_esterni.titleLink.getData()}" target="cur_link_esterni.link.getData()" class="article__attachments d-flex align-items-start"> 
151                        <svg class="ico-svg add"> 
152                          <use xlink:href="${themeIconsPath}#arrow-down-to-line-light"/> 
153                       </svg> 
154                       <span>${cur_link_esterni.titleLink.getData()}</span> 
155                     </a> 
156                   </div> 
157                </#if> 
158              </#list> 
159            </div> 
160			    </#if> 
161        </div> 
162		  </#if> 
163 
164    </div> 
165 
166    <#if contentVisible == true && images.getSiblings()?has_content && images.getSiblings()?size gt 0 && images.getSiblings()[0].getData()?? && images.getSiblings()[0].getData()?has_content> 
167				<section class="section photogallery"> 
168					<div class="row"> 
169						<div class="col-12"> 
170							<div class="section__wrap-title d-flex justify-content-between align-items-end"> 
171								<div class="section__title"><@liferay.language key="confindustria.photogallery"/></div> 
172								<div class="slider-controls slider-controls-gallery d-flex align-items-center"> 
173									<div class="dots"/> 
174								</div> 
175							</div> 
176						</div> 
177					</div> 
178					<div class="row"> 
179						<div class="col-12 col-lg-8"> 
180							<div class="slider slider-gallery"> 
181								<#list images.getSiblings() as image> 
182								<div> 
183									<div class="box-photo-lightbox text-center"> 
184										<a data-senna-off="true" href="${image.getData()}" title="${image.getAttribute("alt")}" id="slider-sede-${image?index}" class="box-photo-lightbox__link fresco" style="background-image: url('${image.getData()}')" data-fresco-group="photogallery_sede" data-fresco-caption="${image.getAttribute("alt")}"> 
185										<#if image.getAttribute("alt") ?? && image.getAttribute("alt") !=""> 
186											<span class="box-photo-lightbox__title">${image.getAttribute("alt")}</span> 
187										</#if> 
188										<span class="d-none"> 
189											<@liferay.language key="image"/> "${image?index}" </span> 
190										</a> 
191									</div> 
192								</div> 
193								</#list> 
194							</div> 
195						</div> 
196					</div> 
197				</section> 
198    </#if> 
199 
200  </div> 
201</article> 
202 
203<#-- Contatti --> 
204<#assign hasContacts = contact.getSiblings()?has_content && contact.getSiblings()?size gt 0 && contact.getSiblings()[0].getData() != ''/> 
205<#if contentVisible == true && hasContacts > 
206  <section id="riferimenti" class="section section--dark" data-group="true"> 
207    <div class="container"> 
208      <div class="row"> 
209        <div class="col-12"> 
210          <div class="section__wrap-title d-flex justify-content-between align-items-end"> 
211            <div class="section__title"><@liferay.language key="confindustria.contatti.title" /></div> 
212            <div class="slider-controls slider-controls-contatti d-flex align-items-center"><div class="dots"></div></div> 
213          </div> 
214        </div> 
215      </div> 
216      <div class="row"> 
217        <div class="col-12"> 
218          <div class="slider slider-contatti"> 
219            <#list contact.getSiblings() as cur_contact> 
220              <#assign 
221                webContentData = jsonFactoryUtil.createJSONObject(cur_contact.getData()) 
222              /> 
223              <#if webContentData?? && webContentData.subtype?? && webContentData.subtype == 'CONTATTO'> 
224 
225                  <#assign 
226                      classPK = webContentData.classPK 
227                      item = confindustria_template_tool.getDDMJournalArticleValuesMap(classPK?number, locale) 
228                      nome = item.nome.value 
229                      cognome = item.cognome.value 
230                      ruolo = item.ruolo.value 
231                      telefono = item.telefono.value 
232                      mobile = item.mobile.value 
233                      email = item.email.value 
234                      cardImageOri = item.picture.value 
235                      cardImageJson = jsonFactoryUtil.createJSONObject(cardImageOri) 
236                      fileEntryImage = '' 
237                      entryId = '' 
238                      fileName = '' 
239                  /> 
240                  <#if cardImageJson.groupId?? && cardImageJson.groupId!=""> 
241                    <#assign 
242                          cardImageGroupId = cardImageJson.groupId 
243                          cardImageUuid = cardImageJson.uuid 
244                          fileEntryImage = confindustria_template_tool.getFileEntry(cardImageUuid,cardImageGroupId?number,themeDisplay) 
245                          entryId = fileEntryImage.getFileEntryId() 
246                          fileName = fileEntryImage.getFileName() 
247                    /> 
248                  </#if> 
249                  <div> 
250                    <#include "${templatesPath}/CONFINDUSTRIA-CONTATTO-CARD" /> 
251                  </div> 
252 
253              </#if> 
254            </#list> 
255          </div> 
256        </div> 
257      </div> 
258    </div> 
259  </section> 
260</#if>