حصل خطأ عند معالجة القالب.
The following has evaluated to null or missing:
==> publishDate  [in template "20097#20123#36868" at line 76, column 139]

----
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: ${publishDate}  [in template "20097#20123#36868" at line 76, column 137]
----
1<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />  
2<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />  
3<div class="search-total-label"> 
4	${languageUtil.format(locale, "x-results-for-x", [searchContainer.getTotal(), "<strong>" + htmlUtil.escape(searchResultsPortletDisplayContext.getKeywords()) + "</strong>"], false)} 
5</div> 
6 
7<div class="display-list"> 
8	<ul class="list-group" id="search-results-display-list"> 
9		<#if entries?has_content> 
10			<#list entries as entry> 
11			<#assign assetEntry = assetEntryLocalService.getEntry(entry.getClassName(),entry.getClassPK()) /> 
12    	        <#assign assetRenderer = assetEntry.getAssetRenderer() />  
13    	        <#if assetEntry.getPublishDate()?? > 
14        	        <#assign dateFormat = "dd MM yyyy" /> 
15                    <#assign publishDate=dateUtil.getDate(assetEntry.getPublishDate()?date,dateFormat,locate)/> 
16                </#if> 
17				<li class="list-group-item list-group-item-flex"> 
18					<#if !entry.isTemporarilyUnavailable()> 
19						<div class="autofit-col"> 
20							<#if entry.isThumbnailVisible()> 
21								<span class="sticker"> 
22									<span class="sticker-overlay"> 
23										<img 
24											alt="${languageUtil.get(locale, "thumbnail")}" 
25											class="sticker-img" 
26											src="${entry.getThumbnailURLString()}" 
27										/> 
28									</span> 
29								</span> 
30							<#elseif entry.isUserPortraitVisible() && stringUtil.equals(entry.getClassName(), userClassName)> 
31								<@liferay_ui["user-portrait"] userId=entry.getAssetEntryUserId() /> 
32							<#elseif entry.isIconVisible()> 
33								<span class="sticker sticker-rounded sticker-secondary sticker-static"> 
34									<@clay.icon symbol="${entry.getIconId()}" /> 
35								</span> 
36							</#if> 
37						</div> 
38 
39						<div class="autofit-col autofit-col-expand"> 
40							<section class="autofit-section"> 
41								<div class="list-group-title"> 
42									<a href="${entry.getViewURL()}"> 
43										${entry.getHighlightedTitle()} 
44									</a> 
45								</div> 
46 
47								<div class="search-results-metadata"> 
48									<p class="list-group-subtext"> 
49										<#if entry.isModelResourceVisible()> 
50											<span class="subtext-item"> 
51												<strong>${entry.getModelResource()}</strong> 
52											</span> 
53										</#if> 
54 
55										<#if entry.isLocaleReminderVisible()> 
56											<@liferay_ui["icon"] 
57												icon="../language/${entry.getLocaleLanguageId()}" 
58												message=entry.getLocaleReminder() 
59											/> 
60										</#if> 
61 
62										<#if entry.isCreatorVisible()> 
63											<span class="subtext-item"> 
64												&#183; 
65 
66												<@liferay.language key="written-by" /> 
67 
68												<strong>${htmlUtil.escape(entry.getCreatorUserName())}</strong> 
69											</span> 
70										</#if> 
71 
72										<#if entry.isCreationDateVisible()> 
73											<span class="subtext-item"> 
74												<@liferay.language key="date" />: 
75 
76												<strong class="date js-date" data-date="${publishDate} ?? DD MM YYYY ?? DD MMMM YYYY">${publishDate}</strong> 
77											</span> 
78										</#if> 
79									</p> 
80 
81									<#if entry.isContentVisible()> 
82										<p class="list-group-subtext"> 
83											<span class="subtext-item"> 
84												${entry.getContent()} 
85											</span> 
86										</p> 
87									</#if> 
88 
89									<#if entry.isFieldsVisible()> 
90										<p class="list-group-subtext"> 
91											<#assign separate = false /> 
92 
93											<#list entry.getFieldDisplayContexts() as fieldDisplayContext> 
94												<#if separate> 
95													&#183; 
96												</#if> 
97 
98												<span class="badge">${fieldDisplayContext.getName()}</span> 
99 
100												<span>${fieldDisplayContext.getValuesToString()}</span> 
101 
102												<#assign separate = true /> 
103											</#list> 
104										</p> 
105									</#if> 
106 
107									<#if entry.isAssetCategoriesOrTagsVisible()> 
108										<h6 class="search-document-tags text-default"> 
109											<@liferay_asset["asset-tags-summary"] 
110												className=entry.getClassName() 
111												classPK=entry.getClassPK() 
112												paramName=entry.getFieldAssetTagNames() 
113												portletURL=entry.getPortletURL() 
114											/> 
115 
116											<@liferay_asset["asset-categories-summary"] 
117												className=entry.getClassName() 
118												classPK=entry.getClassPK() 
119												paramName=entry.getFieldAssetCategoryIds() 
120												portletURL=entry.getPortletURL() 
121											/> 
122										</h6> 
123									</#if> 
124 
125									<#if entry.isDocumentFormVisible()> 
126										<h6 class="expand-details text-default"> 
127											<span class="list-group-text" style=""> 
128												<a href="javascript:;"> 
129													<@liferay.language key="details" />... 
130												</a> 
131											</span> 
132										</h6> 
133 
134										<div class="hide search-results-list table-details table-responsive"> 
135											<table class="table"> 
136												<thead> 
137													<tr> 
138														<th class="key-column"> 
139															<@liferay.language key="key" /> 
140														</th> 
141														<th> 
142															<@liferay.language key="value" /> 
143														</th> 
144													</tr> 
145												</thead> 
146 
147												<tbody> 
148													<#list entry.getDocumentFormFieldDisplayContexts() as fieldDisplayContext> 
149														<tr> 
150															<td class="key-column table-details-content"> 
151																<strong>${htmlUtil.escape(fieldDisplayContext.getName())}</strong> 
152															</td> 
153															<td class="table-details-content"> 
154																<code> 
155																	${fieldDisplayContext.getValuesToString()} 
156																</code> 
157															</td> 
158														</tr> 
159													</#list> 
160												</tbody> 
161											</table> 
162										</div> 
163									</#if> 
164								</div> 
165							</section> 
166						</div> 
167					<#else> 
168						<div class="autofit-col"> 
169							<div class="alert alert-danger"> 
170								<@liferay.language_format 
171									arguments="result" 
172									key="is-temporarily-unavailable" 
173								/> 
174							</div> 
175						</div> 
176					</#if> 
177				</li> 
178			</#list> 
179		</#if> 
180	</ul> 
181</div> 
182 
183<@liferay_aui.script use="aui-base"> 
184	A.one('#search-results-display-list').delegate( 
185		'click', 
186		function(event) { 
187			var currentTarget = event.currentTarget; 
188 
189			currentTarget.siblings('.search-results-list').toggleClass('hide'); 
190		}, 
191		'.expand-details' 
192	); 
193</@liferay_aui.script>