/o//commerce-media/accounts/-1/images/30521910?download=false
This app enables your users to interact with their email using an
easy to use, ubiquitous web interface. If your mail system supports
the IMAP protocol, you can use this app to integrate your users' mail
with the rest of your web site. You can also connect this app to a
mail account provided by Google. The Mail app is a great way to
integrate a familiar service with other the collaboration features
that Liferay provides.
This app will appear in your Application menu and Control Panel
once installed.
This app enables your users to interact with their email using an
easy to use, ubiquitous web interface. If your mail system supports
the IMAP protocol, you can use this app to integrate your users' mail
with the rest of your web site. You can also connect this app to a
mail account provided by Google. The Mail app is a great way to
integrate a familiar service with other the collaboration features
that Liferay provides.
This app will appear in your Application menu and Control Panel
once installed.
Desenvolvedor
Publisher Date
January 22, 2024
Deployment Method
Liferay Self-Hosted
Liferay PaaS
App Type
Versão
Versões compatíveis
Standard Price
Help and Support
Compartilhar link
The following has evaluated to null or missing:
==> channel.items [in template "3192443#3192485#null" at line 18, column 30]
----
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 channelId = channel.items[0].id [in template "3192443#3192485#null" at line 18, column 9]
----
1<#if themeDisplay?has_content>
2 <#assign scopeGroupId = themeDisplay.getScopeGroupId() />
3</#if>
4
5<#if currentURL?has_content>
6 <#if currentURL?contains('web')>
7 <#assign
8 index = 2
9 partsUrl = currentURL?split('/')
10 siteName = partsUrl[index..index]?join('/')
11 />
12 </#if>
13</#if>
14
15<#assign channel = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels?accountId=-1&filter=name eq 'Marketplace Channel' and siteGroupId eq '${scopeGroupId}'") />
16
17<#if channel?has_content>
18 <#assign channelId = channel.items[0].id />
19</#if>
20
21<#if (CPDefinition_cProductId.getData())??>
22 <#assign productId = CPDefinition_cProductId.getData() />
23</#if>
24
25<#assign
26 product = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels/"+ channelId +"/products/"+ productId +"?accountId=-1&nestedFields=productSpecifications")
27 productSpecifications = product.productSpecifications![]
28/>
29
30<div>
31 <#if productSpecifications?has_content>
32 <#assign priceModels = productSpecifications?filter(item -> stringUtil.equals(item.specificationKey, "price-model")) />
33
34 <#if priceModels?has_content>
35 <#list priceModels as priceModel>
36 <div class="bg-neutral-8">${priceModel.value}</div>
37 </#list>
38 </#if>
39 </#if>
40</div>
HTML Example
A paragraph is a self-contained unit of a discourse in writing dealing with a particular point or idea. Paragraphs are usually an expected part of formal writing, used to organize longer prose.