BENS À VENDA
Conheça nossas oportunidades de negócios!
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> assetRenderer.getArticle [in template "20102#20128#301694608" at line 40, column 43]
----
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 journalArticle = assetRendere... [in template "20102#20128#301694608" at line 40, column 17]
----
1<#assign dlFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")>
2<#assign JournalArticleLocalServiceUtil = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
3<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")>
4<#assign vocabularyService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")>
5
6<#assign layout = themeDisplay.getLayout()>
7<#assign group = layout.getGroup()>
8<#assign siteFriendlyURL = group.getFriendlyURL()>
9<#assign pageFriendlyURL = layout.getFriendlyURL(themeDisplay.getLocale())>
10<#if layout.isPublicLayout()>
11 <#assign publicityContext = "/web" />
12<#else>
13 <#assign publicityContext = "/group" />
14</#if>
15<#assign targetPortletIdString = renderResponse.getNamespace() />
16<#assign startIndex = (targetPortletIdString?length - 13) />
17<#assign targetPortletIdCrop = targetPortletIdString[startIndex ..] />
18<#assign targetPortletID = targetPortletIdCrop?substring(0, targetPortletIdCrop?length -1) />
19
20<#assign currentPageUrl = themeDisplay.getPortalURL() + publicityContext + siteFriendlyURL + pageFriendlyURL>
21<#assign targetViewUrl = currentPageUrl>
22
23
24
25
26
27<#if entries?has_content>
28 <!-- INICIO MODELO WIDGET -->
29<section id="produtos">
30 <div class="container py-lg-5 py-3 d-flex flex-wrap justify-content-center align-items-center" style="gap: 15px;">
31 <#list entries as entry>
32 <#assign assetRenderer = entry.getAssetRenderer() />
33 <#assign categories = entry.getCategories()>
34 <#assign categoryId = -1>
35 <#list categories as category>
36 <#assign categoryId = category.getCategoryId() />
37 </#list>
38 <#assign viewURL = "${targetViewUrl}/-/asset_publisher/${targetPortletID}/content/id/${entry.getEntryId()}${(categoryId != -1)?then('?p_r_p_categoryId=' + categoryId, '')}" />
39 <#if assetRenderer??>
40 <#assign journalArticle = assetRenderer.getArticle() />
41 <#if journalArticle??>
42 <#assign articleContent = journalArticle.getContent() />
43 <#assign docXml = saxReaderUtil.read(journalArticle.getContent()) />
44 <#assign xmlValue = docXml.valueOf("//dynamic-element[@name='card_image']/dynamic-content[@language-id='pt_BR']/text()") />
45 <#assign pictureURL = getArticleDLEntryUrl(xmlValue) />
46 <#assign summaryContent = (entry.getSummary(locale)?length < 220)?then(entry.getSummary(locale), entry.getSummary(locale)?substring(0, 220) + '...' ) />
47 <div class="item">
48 <div class="card cartao-produto d-flex flex-column align-items-center justify-content-between overflow-hidden box-shadow-1" >
49 <#if pictureURL?has_content>
50 <div class="card-image w-100" style="cursor: pointer; background-image: url('${pictureURL}')" onclick="window.open('${viewURL}', '_self')"> </div>
51 </#if>
52 <div class="card-body w-100" onclick="window.open('${viewURL}', '_self')" style="cursor: pointer;">
53 <h5 class="card-title c-turq fw-700 fs-6 lh-1 mb-2">${entry.getTitle(locale)}</h5>
54 <div class="card-text c-verdee lh-1 m-0">${summaryContent}</div>
55 </div>
56 <div class="card-footer w-100 bg-branco">
57 <a style="cursor: pointer;" class="btn btn-proposta btn-secondary w-100 text-center mb-2">Enviar uma proposta</a>
58 <a onclick="window.open('${viewURL}', '_self')" style="cursor: pointer;" class="btn btn-secondary w-100 text-center">Saiba mais</a>
59 </div>
60 </div>
61 </div>
62 </#if>
63 </#if>
64 </#list>
65 </div>
66</section>
67<style>
68 #produtos .container:hover .cartao-produto {
69 transform: scale(.97);
70 filter: saturate(.2);
71 }
72 #produtos .container:hover .cartao-produto:hover {
73 filter: saturate(1);
74 transform: scale(1);
75 }
76 #produtos .cartao-produto {
77 width: 360px;
78 min-width: 360px;
79 border-radius: 16px;
80 border: solid 1px var(--turq);
81 overflow: hidden;
82 transition: all .5s;
83 }
84 #produtos .cartao-produto .card-image {
85 height: 220px;
86 background-size: cover;
87 background-position: center;
88 background-repeat: no-repeat;
89 }
90 #produtos .cartao-produto .card-body {
91 height: 150px
92 }
93 #produtos .cartao-produto .card-footer {
94 height: 115px;
95 }
96 #produtos .cartao-produto .card-text p {
97 margin-bottom: 0px;
98 }
99 @media (max-width: 590px) {
100 #produtos .cartao-produto .card-image {
101 background-position: 50% 5%;
102 }
103 #produtos .cartao-produto {
104 width: 100%;
105 height: unset;
106 min-height: unset;
107 }
108 }
109</style>
110<#else>
111 <div class="alert alert-info">
112 Não existe produto cadastrado.
113 </div>
114</#if>
115
116<#function getArticleDLEntryUrl xmlValue>
117 <#local docUrl = "" />
118
119 <#if xmlValue?has_content>
120 <#local jsonObject = xmlValue?eval />
121 <#local entryUuid = jsonObject.uuid />
122 <#local entryGroupId = getterUtil.getLong(jsonObject.groupId) />
123 <#local dlFileEntry = dlFileEntryLocalService.getDLFileEntryByUuidAndGroupId(entryUuid, entryGroupId) />
124 <#local assetEntry = assetEntryLocalService.getEntry("com.liferay.document.library.kernel.model.DLFileEntry", dlFileEntry.fileEntryId) />
125 <#local assetRenderer = assetEntry.assetRenderer />
126 <#local docUrl = assetRenderer.getURLDownload(themeDisplay) />
127 </#if>
128
129 <#return docUrl />
130
131</#function>