Agrégateur de contenus

Une erreur s'est produite lors du traitement du gabarit.
The following has evaluated to null or missing:
==> branchImage_map.url  [in template "384618#384647#393720" at line 52, column 39]

----
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 branchImageUrl = branchImage_...  [in template "384618#384647#393720" at line 52, column 13]
----
1<#setting url_escaping_charset="UTF-8"> 
2 
3<#function getFieldValue ddmFormFieldValues fieldReference> 
4    <#list ddmFormFieldValues as ddmFormFieldValue> 
5        <#if ddmFormFieldValue.getDDMFormField().getFieldReference()==fieldReference> 
6            <#if (ddmFormFieldValue.getValue())??> 
7                <#assign value=ddmFormFieldValue.getValue().getString(locale) /> 
8                <#return value /> 
9            <#else> 
10                <#return null /> 
11            </#if> 
12        </#if> 
13    </#list> 
14    <#return null /> 
15</#function> 
16 
17<#assign defaultSearchUrl = "/search" /> 
18 
19<#function getSearchURLByLocal defaultSearchUrl> 
20    <#assign groupId = themeDisplay.getLayout().getGroupId() /> 
21    <#assign searchFriendlyURLLayout = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService").getFriendlyURLLayout(groupId, false, defaultSearchUrl) /> 
22    <#return searchFriendlyURLLayout.getFriendlyURL(locale) /> 
23</#function> 
24 
25<#assign SiteGroup = themeDisplay.getSiteGroup() /> 
26<#assign displayUrl = SiteGroup.getDisplayURL(themeDisplay) /> 
27<#assign searchUrl = getSearchURLByLocal(defaultSearchUrl) /> 
28 
29<#if displayUrl?contains("/web/arena")> 
30    <#assign arenaUrl = "/web/arena" /> 
31    <#assign searchUrlQueryString = searchUrl + "#/?" /> 
32<#else> 
33    <#assign arenaUrl = "" /> 
34    <#assign searchUrlQueryString = searchUrl + "?" /> 
35</#if> 
36 
37<#if entries?has_content> 
38    <section class="ax-card-container row featured-search-list clearfix"> 
39 
40        <#list entries as curEntry> 
41            <#assign assetRenderer = curEntry.getAssetRenderer() /> 
42            <#assign ddmFormValuesReader = assetRenderer.getDDMFormValuesReader() /> 
43            <#assign ddmFormFieldValues = ddmFormValuesReader.getDDMFormValues().getDDMFormFieldValues() /> 
44 
45            <#assign entryTitle = htmlUtil.escape(assetRenderer.getTitle(locale)) /> 
46 
47            <#assign searchTerm = getFieldValue(ddmFormFieldValues, 'searchTerm') /> 
48            <#assign decodedSearchTerm = searchTerm?html?replace("&amp;", "&") /> 
49 
50            <#assign image = getFieldValue(ddmFormFieldValues, 'image') /> 
51            <#assign branchImage_map = jsonFactoryUtil.createJSONObject(image) /> 
52            <#assign branchImageUrl = branchImage_map.url /> 
53            <#assign altText = branchImage_map.description /> 
54            <#if decodedSearchTerm?starts_with("?")> 
55                <#assign decodedSearchTerm = decodedSearchTerm[1..] /> 
56            </#if> 
57            <#if !decodedSearchTerm?starts_with("q=") && !decodedSearchTerm?starts_with("c=")> 
58                <#assign decodedSearchTerm = "q=" + decodedSearchTerm /> 
59            </#if> 
60 
61 
62            <div class="col-md-3"> 
63                <div class="lfr-meta-actions asset-actions clearfix"><@getEditIcon /></div> 
64                <div class="ax-card featured-search-item"> 
65                    <a class="" href="${arenaUrl}${searchUrlQueryString}${decodedSearchTerm}"> 
66                        <div class="ax-card-media-container ratio-4x3"> 
67                            <img src="${branchImageUrl}" alt="${altText}"> 
68                        </div> 
69                        <article class="ax-card-text-section"> 
70                            <h3 class="ax-card-title text-center">${entryTitle}</h3> 
71                        </article> 
72                    </a> 
73                </div> 
74            </div> 
75        </#list> 
76    </section> 
77</#if> 
78 
79<#macro getEditIcon> 
80 
81    <#assign redirectURL = renderResponse.createRenderURL() /> 
82 
83    ${redirectURL.setParameter("struts_action", "/asset_publisher/add_asset_redirect")} 
84    ${redirectURL.setWindowState("pop_up")} 
85 
86    <#assign editPortletURL = assetRenderer.getURLEdit(renderRequest, renderResponse, windowStateFactory.getWindowState("pop_up"), redirectURL) /> 
87 
88    <#if validator.isNotNull(editPortletURL)> 
89        <#assign editTitle = languageUtil.format(locale, "edit-x", htmlUtil.escape(assetRenderer.getTitle(locale))) /> 
90 
91        <@liferay_ui["icon"] 
92        <#--image="edit"--> 
93        iconCssClass="icon-edit" 
94        message=editTitle 
95        url="javascript:Liferay.Util.openWindow({dialog: {width: 960}, id:'" + renderResponse.getNamespace() + "editAsset', editTitle: '" + editTitle + "', uri:'" + htmlUtil.escapeURL(editPortletURL.toString()) + "'});" 
96        /> 
97    </#if> 
98</#macro> 

Compte

Sélecteur de Langue