Guide to the quality and safety of tissues and cells for human applications - 4th  Edition (2019)

An error occurred while processing the template.
The following has evaluated to null or missing:
==> renderer.getArticle  [in template "20097#20123#106922" at line 29, column 42]

----
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: journalArticle = renderer.getArticle()  [in template "20097#20123#106922" at line 29, column 25]
----
1<#assign webContentXMLParser = serviceLocator.findService("com.coe.template.helper.api.WebContentXMLParser") /> 
2<#assign ddmTemplate = webContentXMLParser.getDDMTemplateByName(request, "Macros") /> 
3<#include "${templatesPath}/${ddmTemplate.templateKey}" /> 
4 
5<#assign 
6	class = "" 
7	catFiltersActive = false 
8/> 
9<#list stringUtil.split(metadataFields) as metadata> 
10	<#if metadata == "categories"> 
11	   <#assign  
12		   class = "categoryfilters" 
13		   catFiltersActive = true 
14	   /> 
15	</#if> 
16</#list> 
17<div class="title-list ${class}"> 
18<#if entries?has_content> 
19	<#list entries as curEntry> 
20		<#assign  
21			content = "" 
22			date = "" 
23			location = "" 
24			link = "" 
25			origin = "" 
26			 
27			renderer = curEntry.getAssetRenderer() 
28			className = renderer.getClassName() 
29			journalArticle = renderer.getArticle() 
30			journalArticleContent = journalArticle.getContentByLocale(locale?string) 
31		/> 
32		 
33		<#if className == "com.liferay.journal.model.JournalArticle"> 
34			<#assign  
35				origin = webContentXMLParser.getValue(journalArticleContent, 'origine') 
36				date = webContentXMLParser.getValue(journalArticleContent, 'date') 
37				location = webContentXMLParser.getValue(journalArticleContent, 'location') 
38				lien_redirection = webContentXMLParser.getValue(journalArticleContent, 'lien_redirection') 
39				simulPlayBool = webContentXMLParser.getValue(journalArticleContent, 'simulateur_play') 
40			/> 
41 
42			<#if lien_redirection?? && lien_redirection?has_content> 
43				<#assign link = lien_redirection> 
44			<#else> 
45			<#attempt> 
46				<#assign link = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, curEntry)> 
47			<#recover> 
48				Recovering from getAssetViewURL error 
49			</#attempt> 
50				<#if assetLinkBehavior != "showFullContent"> 
51					<#assign link = renderer.getURLViewInContext(renderRequest, renderResponse, link)> 
52				</#if> 
53			</#if> 
54 
55			<div class="element <#if catFiltersActive><@getClasses entry=curEntry/></#if> clearfix"> 
56				<@getEditIcon /> 
57				 
58				<#if origin != "" || location != "" || date != ""> 
59				<div class="upper"> 
60					<#if origin != ""> 
61						<span class="origine">${origin}</span> 
62					</#if> 
63					<#if date != ""> 
64						<span class="date">${date}</span> 
65					</#if> 
66					<#if location != ""> 
67						<span class="location">${location}</span> 
68					</#if> 
69				</div> 
70				</#if> 
71				<p> 
72					<a href="${link}"> 
73						${htmlUtil.escape(curEntry.getTitle(locale))} 
74					</a> 
75				</p> 
76			</div> 
77        </#if> 
78    </#list> 
79</#if> 
80</div>