Fehler bei der Verarbeitung der Vorlage.
The following has evaluated to null or missing:
==> serviceLocator.findService("com.liferay.dynamic.data.mapping.storage.StorageEngine")  [in template "20116#20152#2674494" at line 104, column 66]

----
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: #assign StorageEngine = serviceLocato...  [in template "20116#20152#2674494" at line 104, column 41]
----
1<#-- Get current journal article --> 
2<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
3<#assign journalArticleId = .vars['reserved-article-id'].data> 
4<#assign journalArticle = JournalArticleLocalService.getArticle(groupId, journalArticleId)> 
5 
6<#-- Get current journal article create date --> 
7<#assign date_Data = getterUtil.getString(date.day.getData())> 
8<#assign date_CH = serviceLocator.findService("ch.ti8m.akb.liferay.service.DateUtilsService").reformatDate(date_Data, "yyyy-MM-dd", "dd. MMMM yyyy", localeUtil.getDefault())> 
9 
10<#-- Get current journal article categories --> 
11<#assign categoryList = serviceLocator.findService("ch.ti8m.akb.liferay.service.CategoryService").getCategories(groupId, journalArticleId)> 
12<#assign categoryListSort = categoryList?sort_by("categoryId")> 
13 
14<#-- Get current journal article tags --> 
15<#assign tagList = serviceLocator.findService("ch.ti8m.akb.liferay.service.TagService").getTags(groupId, journalArticleId)> 
16 
17<#-- Get current url --> 
18<#assign currentUrl = themeDisplay.getLayout().getFriendlyURL()> 
19 
20<#-- Get current plid --> 
21<#assign plid = themeDisplay.getLayout().getPlid()> 
22 
23<#-- Get default Metadata Id --> 
24<#assign metadataId = 30376 /> 
25 
26<#-- Set Header Colors --> 
27<#assign defaultTextColor = "#ffffff" /> 
28<#assign defaultBgColor = "#071a3f" /> 
29<#if textColor??> 
30    <#if textColor.getData()?has_content> 
31        <#assign defaultTextColor = textColor.getData() /> 
32    </#if> 
33</#if> 
34<#if bgColor??> 
35    <#if bgColor.getData()?has_content> 
36        <#assign defaultBgColor = bgColor.getData() /> 
37    </#if> 
38</#if> 
39 
40 
41 
42<#-- Inhalte auf der Detailseite --> 
43 
44<akb-event-details data-url="${currentUrl}" data-plid="${plid}" itemscope itemtype="https://schema.org/Event"> 
45    <#if detailpage.getData() == "true"> 
46        <#assign has_gallery = "false" /> 
47 
48        <#assign thumbnail_url = ""> 
49        <#if image.getData()?has_content> 
50            <#assign thumbnail_url = image.getData()> 
51        <#elseif teaser.thumbnail.getData()?has_content> 
52            <#assign thumbnail_url = teaser.thumbnail.getData()> 
53        </#if> 
54 
55        <div class="header"> 
56            <akb-header> 
57                <div class="content-width"> 
58                    <div class="background"> 
59                        <div class="content"> 
60                            <div style="color: ${defaultTextColor}; background-color: ${defaultBgColor};"> 
61                                <h1><span itemprop="name">${title.getData()}</span></h1> 
62                            </div> 
63                        </div> 
64                        <div class="image"> 
65                            <div style="background-image:url(${thumbnail_url}); 
66                            <#if bgPositionHeaderImg.getData()?has_content> 
67                                    background-position: ${bgPositionHeaderImg.getData()}; 
68                            </#if> 
69                                    "> 
70                                <#if image.getData()?has_content> 
71                                    <img src="${image.getData()}" alt="${title.getData()}" style="display:none;" itemprop="image"> 
72                                </#if> 
73                            </div> 
74                        </div> 
75                    </div> 
76                </div> 
77            </akb-header> 
78        </div> 
79        <div class="main"> 
80            <div class="content-width"> 
81                <div class="row"> 
82                    <div class="col-sm-8 col-xs-12"> 
83 
84                        <#-- Content --> 
85 
86                        <div class="html-content"> 
87                            <#if content.getData()?has_content> 
88                                <div itemprop="description">${content.getData()}</div> 
89                            </#if> 
90 
91                            <#list imageGallery.getSiblings() as this_gallery> 
92                                <#if this_gallery.folderId.getData()?number != 0> 
93                                    <#assign has_gallery = "true" /> 
94                                    <#assign HttpUtil = staticUtil["com.liferay.portal.kernel.util.HttpUtil"] /> 
95                                    <#assign HtmlUtil = staticUtil["com.liferay.portal.kernel.util.HtmlUtil"] /> 
96                                    <#assign StringPool = staticUtil["com.liferay.petra.string.StringPool"] /> 
97                                    <#assign DLFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") /> 
98 
99 
100                                    <#assign files = DLFileEntryLocalService.getFileEntries(groupId, this_gallery.folderId.getData()?number) /> 
101 
102                                    <#if files?has_content> 
103                                        <#assign DLFileEntryMetadataLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryMetadataLocalService") /> 
104                                        <#assign StorageEngine = serviceLocator.findService("com.liferay.dynamic.data.mapping.storage.StorageEngine") /> 
105 
106 
107                                        <#if this_gallery.galleryTitle.getData()?has_content> 
108                                            <h2 id="${this_gallery.galleryTitle.getData()?lower_case}" style="text-align: center;">${this_gallery.galleryTitle.getData()}</h2> 
109                                        <#-- <p style="display:none;">${files?join(", ")}</p>--> 
110                                        </#if> 
111                                        <div class="akb-image-gallery"> 
112                                            <#list files as file> 
113                                                <#assign filePath = "/documents/" + file.repositoryId + "/" + file.folderId + "/" /> 
114                                                <#assign fileName = file.fileName /> 
115                                                <#assign fileUuid = file.uuid /> 
116                                                <#assign fileTitle = file.title /> 
117                                                <#assign fileDescription = file.description /> 
118                                                <#assign fileVersion = file.version /> 
119                                                <#assign fileVersionId = file.getFileVersion().getFileVersionId() /> 
120                                                <#assign fileSrc = filePath + fileName + "?version=" + fileVersion /> 
121 
122                                                <#assign fileMetadata = DLFileEntryMetadataLocalService.getFileEntryMetadata(metadataId, fileVersionId) /> 
123                                                <#assign ddmFormValues = StorageEngine.getDDMFormValues(fileMetadata.getDDMStorageId()) /> 
124                                                <#assign ddmFormFieldValuesMap = ddmFormValues.getDDMFormFieldValuesMap() /> 
125 
126                                                <#assign fileWidth = ddmFormFieldValuesMap['TIFF_IMAGE_WIDTH'][0].getValue().getString(locale) /> 
127                                                <#assign fileHeight = ddmFormFieldValuesMap['TIFF_IMAGE_LENGTH'][0].getValue().getString(locale) /> 
128 
129 
130                                            <#-- <p style="display:none;">${fileWidth}</p> --> 
131                                                <div class="akb-image-item"> 
132                                                    <a data-pswp-title="${fileTitle}" 
133                                                       href="${fileSrc}" 
134                                                       data-pswp-description="${fileDescription}" 
135                                                       data-pswp-width="${fileWidth}" 
136                                                       data-pswp-height="${fileHeight}"> 
137                                                        <div class="akb-image-thumbnail" style="background-image:url('${fileSrc}')"></div> 
138                                                    </a> 
139                                                </div> 
140                                            </#list> 
141                                        </div> 
142                                    </#if> 
143                                </#if> 
144                            </#list> 
145                        </div> 
146 
147                    </div> 
148                    <div class="col-sm-4 col-xs-12"> 
149 
150                        <#-- Sidebar --> 
151 
152                        <div class="sidebar"> 
153                            <div> 
154                                <p>Details</p> 
155 
156                                <#if eventType.getData() == "Offline" || eventType.getData() == "Mixed"> 
157 
158                                    <#list address.getSiblings() as this_address> 
159                                        <div class="icon-location-pin-2" itemprop="location" itemscope itemtype="https://schema.org/Place"> 
160                                            <div> 
161                                                <#if this_address.location.getData()?has_content> 
162                                                    <p itemprop="name">${this_address.location.getData()}</p> 
163                                                </#if> 
164                                                <#if this_address.street.getData()?has_content || this_address.place.getData()?has_content> 
165                                                    <div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress"> 
166                                                        <#if this_address.street.getData()?has_content> 
167                                                            <p itemprop="streetAddress">${this_address.street.getData()}</p> 
168                                                        </#if> 
169                                                        <#if this_address.plz.getData()?has_content && this_address.place.getData()?has_content> 
170                                                            <p> 
171                                                                <span itemprop="postalCode">${this_address.plz.getData()}</span> 
172                                                                <span itemprop="addressLocality">${this_address.place.getData()}</span> 
173                                                            </p> 
174                                                        </#if> 
175                                                    </div> 
176                                                </#if> 
177                                            </div> 
178                                        </div> 
179                                    </#list> 
180 
181                                <#elseif eventType.getData() == "Online"> 
182 
183                                    <div class="icon-computer-imac-1" itemprop="location" itemscope itemtype="https://schema.org/VirtualLocation"> 
184                                        <div> 
185                                            <p>Online-Event <a href="${onlineUrl.getData()}" target="_blank" style="display:none;" itemprop="url">Link</a></p> 
186                                        </div> 
187                                    </div> 
188 
189                                </#if> 
190 
191                                <div class="icon-calendar-2"> 
192                                    <div> 
193                                        <#list date.day.getSiblings() as this_day> 
194                                            <#if this_day.getData()?has_content> 
195                                                <#assign thisDay_Data = getterUtil.getString(this_day.getData())> 
196                                                <#assign thisDay_CH = serviceLocator.findService("ch.ti8m.akb.liferay.service.DateUtilsService").reformatDate(thisDay_Data, "yyyy-MM-dd", "dd.MM.yyyy", localeUtil.getDefault())> 
197 
198                                            <#-- For Googles Rich-Snippets --> 
199                                                <#if this_day.start.getData()?has_content> 
200                                                    <#assign starttime = "T" + this_day.start.getData() + "+01:00"> 
201                                                <#else> 
202                                                    <#assign starttime = ""> 
203                                                </#if> 
204                                                <#if this_day.end.getData()?has_content> 
205                                                    <#assign endtime = "T" + this_day.end.getData() + "+01:00"> 
206                                                <#else> 
207                                                    <#assign endtime = ""> 
208                                                </#if> 
209 
210 
211                                                <p> 
212                                                    <span itemprop="startDate" content="${this_day.getData()+starttime}">${thisDay_CH}</span> 
213                                                    <#if this_day.endday.getData()?has_content> 
214                                                        <#assign thisEndDay_Data = getterUtil.getString(this_day.endday.getData())> 
215                                                        <#assign thisEndDay_CH = serviceLocator.findService("ch.ti8m.akb.liferay.service.DateUtilsService").reformatDate(thisEndDay_Data, "yyyy-MM-dd", "dd.MM.yyyy", localeUtil.getDefault())> 
216                                                        bis <span itemprop="endDate" content="${this_day.endday.getData()+endtime}">${thisEndDay_CH}</span> 
217                                                    <#else> 
218                                                        <span style="display:none;" itemprop="endDate" content="${this_day.getData()+endtime}">${thisDay_CH}</span> 
219                                                    </#if> 
220                                                    <#if this_day.start.getData() != "" && this_day.end.getData() != ""> 
221                                                        | ${this_day.start.getData()?replace(":", ".")} bis ${this_day.end.getData()?replace(":", ".")} Uhr 
222                                                    <#elseif this_day.start.getData() != "" || this_day.end.getData() != ""> 
223                                                        <#if this_day.start.getData() == ""> 
224                                                            | bis ${this_day.end.getData()?replace(":", ".")} Uhr 
225                                                        </#if> 
226                                                        <#if this_day.end.getData() == ""> 
227                                                            | ab ${this_day.start.getData()?replace(":", ".")} Uhr 
228                                                        </#if> 
229                                                    </#if> 
230                                                </p> 
231                                            </#if> 
232                                        </#list> 
233                                    </div> 
234                                </div> 
235 
236                                <#if additionalFieldSet.additionalFieldSetFieldSet?? > 
237                                    <#if additionalFieldSet.additionalFieldSetFieldSet.info.getData()?has_content> 
238                                        <div class="icon-infomation-circle"> 
239                                            <div> 
240                                                <p>${additionalFieldSet.additionalFieldSetFieldSet.info.getData()}</p> 
241                                            </div> 
242                                        </div> 
243                                    </#if> 
244                                </#if> 
245 
246                            </div> 
247 
248                            <#if links.linkText.getData()?has_content> 
249                                <div> 
250                                    <p>Links</p> 
251                                    <#list links.linkText.getSiblings() as this_link> 
252                                        <div class="icon-globe-2"> 
253                                            <p><a href="${this_link.linkUrl.getData()}" target="${this_link.linkTarget.getData()}">${this_link.getData()}</a></p> 
254                                        </div> 
255                                    </#list> 
256                                </div> 
257                            </#if> 
258 
259                            <#if downloads.downloadText.getData()?has_content> 
260                                <div> 
261                                    <p>Downloads</p> 
262                                    <#list downloads.downloadText.getSiblings() as this_download> 
263                                        <div class="icon-file-acrobat"> 
264                                            <p><a href="${this_download.downloadUrl.getData()}" target="${this_download.downloadTarget.getData()}">${this_download.getData()}</a></p> 
265                                        </div> 
266                                    </#list> 
267                                </div> 
268                            </#if> 
269 
270                            <#if archive.archiveLink.getData()?has_content> 
271                                <div> 
272                                    <p>Archiv</p> 
273                                    <div class="icon-globe-2"> 
274                                        <p><a href="${archive.archiveLink.getData()}" target="${archive.archiveTarget.getData()}">${archive.archiveText.getData()}</a></p> 
275                                    </div> 
276                                </div> 
277                            </#if> 
278 
279                            <#if contact.getData()?has_content> 
280                                <div> 
281                                    <p>Kontakt</p> 
282                                    <div> 
283                                        <p>${contact.getData()}</p> 
284                                    </div> 
285                                </div> 
286                            </#if> 
287														 
288							<#if additionalField.additionalFieldBoolean.getData() == "true"> 
289                                <div> 
290                                    <p>${additionalField.additionalFieldTitle.getData()}</p> 
291                                    <div> 
292                                        <p>${additionalField.additionalFieldContent.getData()}</p> 
293                                    </div> 
294                                </div> 
295                            </#if> 
296														 
297                            <a class="akb-button colored-button color-akb-blue full-width filled small" style="margin-top:0" data-action="back">zurück zur Übersicht</a> 
298 
299                        </div> 
300 
301                    </div> 
302                </div> 
303 
304            </div> 
305        </div> 
306 
307        <#assign meta = "meta"> 
308        <${meta} itemprop="eventAttendanceMode" content="https://schema.org/${eventType.getData()}EventAttendanceMode"> 
309        <${meta} itemprop="eventStatus" content="https://schema.org/Event${alert.alertType.getData()}"> 
310 
311    <#else> 
312        <div class="main"> 
313            <div class="content-width"> 
314                <h1 class="page-title">${title.getData()}</h1> 
315                <div class="portal-alert alert alert-warning">Diese Veranstaltung verfügt über keine Detailseite.</div> 
316                <a class="akb-button colored-button color-akb-blue normal-width filled big" data-action="back">zurück zur Übersicht</a> 
317 
318            </div> 
319        </div> 
320    </#if> 
321 
322</akb-event-details> 
323<style> 
324    .asset-full-content .component-title.h4 { 
325        display: none; 
326
327</style>