Publications Office of the EU
Public Procurement procedure view - EU tenders
DisplayCustomHeader
Asset Publisher
Asset Publisher
An error occurred while processing the template.
The following has evaluated to null or missing:
==> entry.getAssetRenderer().getArticle  [in template "10157#10197#12490368" at line 10, column 50]

----
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: #assign docXml = saxReaderUtil.read(e...  [in template "10157#10197#12490368" at line 10, column 13]
----
1<div class="gcss-op"> 
2    <!-- START GRID --> 
3    <div class="gs-grid" style="grid-template-columns: repeat(auto-fill,minmax(250px, 1fr));row-gap:var(--gs-base-spacing-l);"> 
4 
5        <#list entries as entry> 
6            <#assign entry = entry /> 
7            <#assign assetRenderer = entry.getAssetRenderer() /> 
8            <#assign className = assetRenderer.getClassName() /> 
9             
10            <#assign docXml = saxReaderUtil.read(entry.getAssetRenderer().getArticle().getContent()) /> 
11            <#assign rootElement = docXml.getRootElement() /> 
12            <#assign availableLocales = rootElement.attribute("available-locales").getText() /> 
13            <#assign defaultLocale = rootElement.attribute("default-locale").getText() /> 
14 
15            <#if (availableLocales?contains(locale)) > 
16                <#assign CardID = docXml.valueOf("//dynamic-element[@name='CardID']/dynamic-content[@language-id='"+locale+"']/text()") /> 
17                <#assign TextSize = docXml.valueOf("//dynamic-element[@name='TextSize']/dynamic-content[@language-id='"+locale+"']/text()") /> 
18                <#assign CardImage = docXml.valueOf("//dynamic-element[@name='CardImage']/dynamic-content[@language-id='"+locale+"']/text()") /> 
19                <#assign Badge = docXml.valueOf("//dynamic-element[@name='Badge']/dynamic-content[@language-id='"+locale+"']/text()") /> 
20                <#assign Title = docXml.valueOf("//dynamic-element[@name='Title']/dynamic-content[@language-id='"+locale+"']/text()") /> 
21                <#assign TitleType = docXml.valueOf("//dynamic-element[@name='TitleType']/dynamic-content[@language-id='"+locale+"']/text()") /> 
22                <#assign TitleURL = docXml.valueOf("//dynamic-element[@name='TitleURL']/dynamic-content[@language-id='"+locale+"']/text()") /> 
23                <#assign SubTitle = docXml.valueOf("//dynamic-element[@name='SubTitle']/dynamic-content[@language-id='"+locale+"']/text()") /> 
24                <#assign BodyText = docXml.valueOf("//dynamic-element[@name='BodyText']/dynamic-content[@language-id='"+locale+"']/text()") /> 
25                <#assign Footer = docXml.valueOf("//dynamic-element[@name='Footer']/dynamic-content[@language-id='"+locale+"']/text()") /> 
26                <#assign FooterContent = docXml.valueOf("//dynamic-element[@name='FooterContent']/dynamic-content[@language-id='"+locale+"']/text()") /> 
27                <#assign FooterContentAlignment = docXml.valueOf("//dynamic-element[@name='FooterContentAlignment']/dynamic-content[@language-id='"+locale+"']/text()") /> 
28 
29            <#else> 
30                <#assign fulllContent = docXml.valueOf("//static-content[@language-id='" + defaultLocale + "']/text()") /> 
31                <#assign CardID = docXml.valueOf("//dynamic-element[@name='CardID']/dynamic-content[@language-id='"+defaultLocale+"']/text()") /> 
32							  <#assign TextSize = docXml.valueOf("//dynamic-element[@name='TextSize']/dynamic-content[@language-id='"+defaultLocale+"']/text()") /> 
33                <#assign CardImage = docXml.valueOf("//dynamic-element[@name='CardImage']/dynamic-content[@language-id='"+defaultLocale+"']/text()") /> 
34                <#assign Badge = docXml.valueOf("//dynamic-element[@name='Badge']/dynamic-content[@language-id='"+defaultLocale+"']/text()") /> 
35                <#assign Title = docXml.valueOf("//dynamic-element[@name='Title']/dynamic-content[@language-id='"+defaultLocale+"']/text()") /> 
36							  <#assign TitleType = docXml.valueOf("//dynamic-element[@name='TitleType']/dynamic-content[@language-id='"+defaultLocale+"']/text()") /> 
37                <#assign TitleURL = docXml.valueOf("//dynamic-element[@name='TitleURL']/dynamic-content[@language-id='"+defaultLocale+"']/text()") /> 
38                <#assign SubTitle = docXml.valueOf("//dynamic-element[@name='SubTitle']/dynamic-content[@language-id='"+defaultLocale+"']/text()") /> 
39							  <#assign BodyText = docXml.valueOf("//dynamic-element[@name='BodyText']/dynamic-content[@language-id='"+defaultLocale+"']/text()") /> 
40                <#assign Footer = docXml.valueOf("//dynamic-element[@name='Footer']/dynamic-content[@language-id='"+defaultLocale+"']/text()") /> 
41                <#assign FooterContent = docXml.valueOf("//dynamic-element[@name='FooterContent']/dynamic-content[@language-id='"+defaultLocale+"']/text()") /> 
42                <#assign FooterContentAlignment = docXml.valueOf("//dynamic-element[@name='FooterContentAlignment']/dynamic-content[@language-id='"+defaultLocale+"']/text()") /> 
43							</#if> 
44                 
45            <#assign jsonimg = jsonFactoryUtil.createJSONObject(CardImage)> 
46            <#assign urlJsonImg = "/documents/" > 
47            <#if CardImage?? && CardImage != "" && jsonimg.groupId?? && jsonimg.groupId != "" > 
48                <#assign urlJsonImg = urlJsonImg + jsonimg.groupId > 
49                <#assign urlJsonImg = urlJsonImg + "/" + jsonimg.fileEntryId > 
50                <#assign urlJsonImg = urlJsonImg + "/" + jsonimg.name > 
51                <#assign urlJsonImg = urlJsonImg + "/" + jsonimg.uuid > 
52            </#if> 
53         
54 
55 
56            <!-- CARD --> 
57            <#if (TextSize??  && TextSize != "Option71239415" )> 
58                <div id="card-${CardID}" class="gs-card-v3 gs-compact"> 
59                <#else><div id="card-${CardID}" class="gs-card-v3"> 
60            </#if> 
61             
62 
63                <!-- top --> 
64                <div class="gs-card-top"> 
65 
66                    <#if CardImage?? && CardImage != "" > 
67                        <div class="gs-card-img"> 
68 
69                            <#if TitleURL?has_content> 
70                                <a aria-hidden="true" href="${TitleURL}" tabindex="-1"><img alt="" src="${urlJsonImg}" /></a> 
71                                <#else><img alt="" src="${urlJsonImg}" /> 
72                            </#if> 
73                             
74                            <#if Badge?has_content> 
75                                <#if TitleURL?has_content> 
76                                    <div class="gs-img-badge"><a aria-hidden="true" href="${TitleURL}" tabindex="-1">${Badge}</a></div> 
77                                <#else><div class="gs-img-badge">${Badge}</div> 
78                            </#if> 
79                                 
80                            </#if> 
81                        </div> 
82                    </#if> 
83 
84                    <!-- body --> 
85                    <div class="gs-card-body"> 
86                         
87                        <#if (TitleType == "Option06059781")> 
88                            <p class="gs-title" id="cardtitle-${CardID}"><a href="${TitleURL}">${Title}</a></p> 
89                        </#if> 
90                        <#if (TitleType == "Option60023604" )> 
91                            <h2 class="gs-title" id="cardtitle-${CardID}"><a href="${TitleURL}">${Title}</a></h2> 
92                        </#if> 
93                        <#if (TitleType == "Option39004431" )> 
94                            <h3 class="gs-title" id="cardtitle-${CardID}"><a href="${TitleURL}">${Title}</a></h3> 
95                        </#if> 
96                        <#if (TitleType == "Option38468523" )> 
97                            <h4 class="gs-title" id="cardtitle-${CardID}"><a href="${TitleURL}">${Title}</a></h4> 
98                        </#if>  
99                        <#if (TitleType == "Option85596771" )> 
100                            <h5 class="gs-title" id="cardtitle-${CardID}"><a href="${TitleURL}">${Title}</a></h5> 
101                        </#if> 
102                        <#if (TitleType == "Option62780052" )> 
103                            <h6 class="gs-title" id="cardtitle-${CardID}"><a href="${TitleURL}">${Title}</a></h6> 
104                        </#if>                               
105                         
106                         
107                        <#if SubTitle?has_content> 
108                            <p class="gs-subtitle">${SubTitle}</p> 
109                        </#if> 
110                        <#if BodyText?has_content> 
111                            <p>${BodyText}</p> 
112                        </#if> 
113 
114                    </div> 
115                </div> 
116                <!-- footer --> 
117                <#if (Footer  == "Option18654909" )></#if> 
118                <#if (Footer  == "Option89122312" )> 
119 
120                    <#if (FooterContentAlignment  == "Option45699370" )> 
121                        <div class="gs-card-footer" style="justify-content:flex-start;"> 
122                            ${FooterContent} 
123                        </div>                     
124                    </#if> 
125                    <#if (FooterContentAlignment  == "Option86073294" )> 
126                        <div class="gs-card-footer" style="justify-content:flex-end;"> 
127                            ${FooterContent} 
128                            <style> 
129                            .gcss-op #card-${CardID}.gs-card-v3 .gs-card-footer p, 
130                            .gcss-op #card-${CardID}.gs-card-v3 .gs-card-footer div { 
131                                justify-content:flex-end; 
132
133                            </style> 
134                        </div>                     
135                    </#if> 
136                    <#if (FooterContentAlignment  == "Option66955638" )> 
137                        <div class="gs-card-footer" style="justify-content:center;"> 
138                            ${FooterContent} 
139                            <style> 
140                            .gcss-op #card-${CardID}.gs-card-v3 .gs-card-footer p, 
141                            .gcss-op #card-${CardID}.gs-card-v3 .gs-card-footer div { 
142                                justify-content:center; 
143
144                            </style> 
145                        </div>                     
146                    </#if> 
147                    <#if (FooterContentAlignment  == "Option60518108" )> 
148                        <div class="gs-card-footer"> 
149                            ${FooterContent} 
150                            <style> 
151                            .gcss-op #card-${CardID}.gs-card-v3 .gs-card-footer p, 
152                            .gcss-op #card-${CardID}.gs-card-v3 .gs-card-footer div { 
153                                width:100%; 
154
155                            .gcss-op #card-${CardID}.gs-card-v3 .gs-card-footer a, 
156                            .gcss-op #card-${CardID}.gs-card-v3 .gs-card-footer p a, 
157                            .gcss-op #card-${CardID}.gs-card-v3 .gs-card-footer div a { 
158                                flex: 1; 
159
160                            </style> 
161                        </div>                     
162                    </#if> 
163 
164                </#if> 
165 
166                <!-- END card --> 
167            </div> 
168         
169        </#list> 
170 
171 
172    <!-- END GRID --> 
173    </div> 
174 
175<!-- END CSS global -->	 
176</div> 
ressources

 

Collection of electronic data and metadata


Asset Publisher

Authority tables and taxonomies

Used in eProcurement standardise the code lists used within the public procurement domain

eProcurement Ontology

Encodes and make available in an open, structured and machine-readable format concepts used in public procurement