Fel uppstod under bearbetning av mallen.
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>
Samlingar med elektroniska data och metadata
Auktoritetsregister och taxonomier
Används inom elektronisk upphandling för att standardisera de kodlistor som används på upphandlingsområdet
Kodar och tillgängliggör begrepp som används inom offentlig upphandling i ett öppet, strukturerat och maskinläsbart format