An error occurred while processing the template.
Java method "it.dvel.rcf.profile.integration.model.impl.ProductImpl.getLineTitle(Locale)" threw an exception when invoked on it.dvel.rcf.profile.integration.model.impl.ProductImpl object "{uuid=9ef01020-1082-c961-ab76-d11b1c5b797b, productId=680, companyId=20101, groupId=20128, userId=20130, userName=Eighty Twenty, createDate=2021-11-02 15:34:10.0, modifiedDate=2024-11-14 15:26:47.423, code=STP0948, productTypeName=Passive/PA Speakers, name=COMPACT M 12, nameSearchable=COMPACTM12, urlTitle=compact-m-12, subtitle=<?xml version='1.0' encoding='UTF-8'?><root available-locales=\"en_US,it_IT,es_ES,fr_FR,de_DE\" default-locale=\"en_US\"><Subtitle language-id=\"en_US\">TWO-WAY PROFESSIONAL SPEAKER</Subtitle><Subtitle language-id=\"de_DE\">PASSIVER 2-WEGE-LAUTSPRECHER</Subtitle><Subtitle language-id=\"es_ES\">ALTAVOZ PASIVO DE 2 VÍAS</Subtitle><Subtitle language-id=\"fr_FR\">ENCEINTE PASSIVE DEUX VOIES</Subtitle><Subtitle language-id=\"it_IT\">DIFFUSORE PROFESSIONALE A DUE VIE</Subtitle></root>, description=<?xml version='1.0' encoding='UTF-8'?><root available-locales=\"en_US,it_IT,es_ES,fr_FR,de_DE\" default-locale=\"en_US\"><Description language-id=\"en_US\">COMPACT M 12 is a multipurpose two-way full-range speaker system, suitable for a wide range of applications. Its balanced sound is a big asset in near-field applications for the best intelligibility. The M 12 features high sensitivity, typical of professional audio cabinets thanks to the use of oversized magnets and a HI-FI sound quality, with smooth and wide frequency response, thanks to the wave-guided compression driver. The SPL level of low-distortion audio the M 12 can provide goes far beyond expectations of such a compact solution. The elegant and compact design with accurate finishing makes M 12 suitable for almost any environment, even with architectural constraints. Optional mounting accessories allow using M 12 on wall or ceiling installations.</Description><Description language-id=\"de_DE\">Der COMPACT M 12 ist ein 2-Wege-Fullrange-Mehrzwecklautsprecher mit vielen Anwendungsmöglichkeiten. Durch seinen angenehmen Klang bietet er vor allem im Nahfeld beste Sprachverständlichkeit. Der M 12 liefert einen hohen Kennschalldruckpegel, typisch für professionelle Boxen mit großzügig dimensionierten Magneten. Sein Kompressionstreiber mit Wave Guide sorgt für Hi-Fi-Sound mit gleichmäßigem und breitem Frequenzgang. Der maximale Schalldruckpegel für eine verzerrungsfreie Wiedergabe reicht beim M 12 viel weiter, als man es von einer so kompakten Lösung erwarten würde. Durch das elegante und kompakte Design mit sauberer Lackierung fügt sich der M 12 in fast jede Umgebung nahtlos ein, auch unter architektonisch anspruchsvollen  Bedingungen. Optionales Zubehör für die Montage ermöglicht die Wand- oder Deckeneinbaumontage des M 12.</Description><Description language-id=\"es_ES\">El COMPACT M 12 es un altavoz multipropósito de 2 vías y rango completo, ideal para un amplio número de aplicaciones. Su agradable sonido es perfecto para las aplicaciones de campo cercano que precisan una gran inteligibilidad. El M 12 posee una gran sensibilidad, propia de los altavoces de audio profesional, gracias al uso de imanes de gran tamaño y a una calidad de sonido de alta fidelidad, con una respuesta en frecuencia suave y amplia, gracias al transductor de compresión con guía de ondas. El nivel de presión sonora de audio con baja distorsión que puede alcanzar el M 12 está por encima de cualquier expectativa propia de una solución de tamaño tan compacto. El acabado preciso del compacto y elegante diseño permite que el altavoz M 12 encaje en cualquier entorno y requisito arquitectónico. Hay disponibles accesorios de montaje que permiten la instalación del M 12 en paredes y techos.</Description><Description language-id=\"fr_FR\">La COMPACT M 12 est une enceinte deux voies large bande polyvalente, adaptée à un grand nombre d'applications. Sa sonorité agréable est d’une grande aide dans les applications en champ proche pour une meilleure intelligibilité. La M 12 se caractérise par une sensibilité élevée, typique des enceintes audio professionnelles grâce à l'utilisation d'aimants surdimensionnés et par une qualité sonore hi-fi, avec une réponse en fréquence régulière et étendue, grâce au tweeter à moteur à chambre de compression chargé par un guide d’ondes. Le niveau SPL que peut atteindre la M 12 avec une faible distorsion dépasse de loin toutes les attentes d'un produit aussi compact. Le design élégant et compact, avec une finition soignée, permet d'adapter la M 12 à presque tous les environnements et contraintes architecturales. Les accessoires de montage en option permettent d'utiliser la M 12 dans le cadre d’une installation murale ou au plafond.</Description><Description language-id=\"it_IT\">COMPACT M 12 è un diffusore a 2 vie full range polivalente, adatto per una vasta gamma di applicazioni. Grazie alla compattezza, al design elegante e discreto e alle rifiniture curate, M 12 è indicato in quasi tutte le condizioni ambientali e architettoniche. Il suono piacevole è particolarmente adatto per le applicazioni near field.&#xd;\nGli accessori opzionali per l’installazione permettono il montaggio a parete o a soffitto per le applicazioni più diverse. Il diffusore M 12 può raggiungere SPL (livelli di pressione sonora) e livelli di suono non distorto ben superiori a quelli che ci si aspetterebbe da soluzioni così compatte. M 12 offre una elevata sensibilità tipica di prodotti per l’audio professionale grazie all’uso di magneti di grandi dimensioni e una qualità del suono ad alta fedeltà con risposta in frequenza ampia e omogenea grazie al dome tweeter in neodimio con guida d’onda. Il sistema di crossover comprende un dispositivo di protezione per le alte frequenze.</Description></root>, type=PRODOTTO, accessoryTypeCode=, publication=RCF, ratio=100, readMoreURL=, youTubeVideos=, youTubeURL=, active=true}"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: ${relatedProduct.getLineTitle(locale)}  [in template "20101#20128#819037" at line 171, column 73]
----
1<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
2<#assign journalArticleId = .vars['reserved-article-id'].data> 
3<#assign journalArticleResourceLocalServiceUtil = staticUtil["com.liferay.journal.service.JournalArticleResourceLocalServiceUtil"]> 
4<#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"]> 
5<#assign articleResourcePK = journalArticleResourceLocalServiceUtil.getArticleResourcePrimKey(groupId, journalArticleId)/> 
6<#assign categoryList=assetCategoryLocalServiceUtil.getCategories("com.liferay.journal.model.JournalArticle",articleResourcePK) > 
7<#assign LayoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")> 
8<#assign parentLayout = LayoutLocalService.getLayout(layout.getAncestorPlid()) /> 
9<#assign parentLayoutUrl = parentLayout.getFriendlyURL(locale) /> 
10<#assign journalArticle = journalArticleLocalService.getLatestArticle(scopeGroupId, journalArticleId) /> 
11<#assign relatedArticles = rcfTemplateHelper.getRelatedAssets(journalArticle, 'com.liferay.journal.model.JournalArticle', 'News Liferay 6.2') /> 
12<#assign relatedProducts = rcfTemplateHelper.getRelatedAssets(journalArticle, 'it.dvel.rcf.profile.integration.model.Product', '') /> 
13 
14<div class="news-detail"> 
15	<div class="bg-white pb-5"> 
16		<div class="py-4 px-2 bg-lighter mb-7 to-back"> 
17			<div class="container-fluid container-fluid-max-xl"> 
18				<a href="javascript: window.history.back();" class="d-flex align-items-center"> 
19					<i class="icon-arrow-right-custom"></i> 
20					<span class="pl-3"><@liferay.language key="back" /></span> 
21				</a> 
22			</div> 
23		</div> 
24		<div class="container-fluid container-fluid-max-xl px-4"> 
25			<div class="mb-2"> 
26				<span class="font-weight-medium category mr-3"> 
27					<#list categoryList as category> 
28						<span class="pr-3">${category.getName()}</span> 
29					</#list> 
30				</span> 
31				<span class="date"> 
32					<#setting time_zone = languageUtil.get(locale, "template-timezone") />  
33					<#assign originalLocale = locale />  
34					<#setting locale = localeUtil.getDefault() /> 
35					<#assign displaydate = .vars['reserved-article-display-date'].data> 
36					<#assign displaydate = displaydate?datetime("EEE, d MMM yyyy HH:mm:ss Z")> 
37					<#setting locale = originalLocale />  
38					${displaydate?string["dd MMM yyyy"]} 
39				</span> 
40			</div> 
41			 
42			<#if (FieldsGroup52652497.Text78515013.getData())??> 
43				<h1 class="mb-4 font-family-narrow-normal px-0">${FieldsGroup52652497.Text78515013.getData()}</h1> 
44			</#if> 
45			 
46			<#if FieldsGroup52652497.Upload45315688.getSiblings()?has_content> 
47				<div class="mb-6"> 
48					<div class="owl-carousel owl-theme" id="owl-carousel-hp"> 
49						<#list FieldsGroup52652497.Upload45315688.getSiblings() as cur_FieldsGroup52652497_Upload45315688> 
50							<div class="slide d-flex align-items-center justify-content-center" style="background-image:url(${cur_FieldsGroup52652497_Upload45315688.getData()})"> 
51							</div> 
52						</#list> 
53					</div> 
54				</div> 
55				<div class="d-none"> 
56					<#list FieldsGroup52652497.Upload45315688.getSiblings() as cur_FieldsGroup52652497_Upload45315688> 
57							<img src="${cur_FieldsGroup52652497_Upload45315688.getData()}" /> 
58						</#list> 
59				</div> 
60			</#if> 
61			 
62			 
63			<div class="d-md-flex align-items-center justify-content-between mb-md-9 mb-5"> 
64				<div class="social h6 mb-0 py-2 pl-2 mb-3 mb-md-0"> 
65					<#assign currentUrl = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() /> 
66					<a href="http://www.linkedin.com/shareArticle?mini=true&url=${currentUrl}&title=${FieldsGroup52652497.Text78515013.getData()}" class="px-2" target="_blank"> 
67						<i class="icon-linkedin-custom px-1"></i> 
68					</a> 
69					<a href="https://www.facebook.com/sharer/sharer.php?u=${currentUrl}" class="px-2" target="_blank"> 
70						<i class="icon-facebook-custom px-1"></i> 
71					</a> 
72					<a href="https://twitter.com/intent/tweet?url=${currentUrl}" class="px-2" target="_blank"> 
73						<i class="icon-twitter-custom px-1"></i> 
74					</a> 
75				</div> 
76			</div> 
77		</div> 
78		<div class="container-fluid container-fluid-max-xl px-md-7 px-lg-9 px-4"> 
79			<#if FieldsGroup52652497.FieldsGroup95339333.getSiblings()?has_content> 
80				<#list FieldsGroup52652497.FieldsGroup95339333.getSiblings() as node> 
81					<div class="mb-md-7 mb-4"> 
82						<#if (FieldsGroup52652497.FieldsGroup95339333.Text94801507.getData())??> 
83							<h6 class="mb-md-6 mb-4">${node.Text94801507.getData()}</h6> 
84						</#if> 
85						<#if (node.RichText63313118.getData())??> 
86							<div class="mb-md-7 mb-4 paragraph font-family-narrow-normal"> 
87								${node.RichText63313118.getData()} 
88							</div> 
89						</#if> 
90						<#if (node.RichText45781737.getData())??> 
91							<div class="row mb-md-7 mb-4"> 
92								<#if (node.Image42436245.getData())?? && node.Image42436245.getData() != ""> 
93									<div class="col-md-8 mb-4 mb-md-0"> 
94										<img alt="${node.Image42436245.getAttribute("alt")}" data-fileentryid="${node.Image42436245.getAttribute("fileEntryId")}" src="${node.Image42436245.getData()}" class="w-100"/> 
95									</div> 
96									<#if (node.RichText45781737.getData())?? && node.RichText45781737.getData() != ""> 
97										<div class="col-md-4 font-family-narrow-normal"> 
98											${node.RichText45781737.getData()} 
99										</div> 
100									</#if> 
101								<#else> 
102									<#if (node.RichText45781737.getData())?? && node.RichText45781737.getData() != ""> 
103										<div class="col-md-12 font-family-narrow-normal"> 
104											${node.RichText45781737.getData()} 
105										</div> 
106									</#if> 
107								</#if> 
108							</div> 
109						</#if> 
110						<#if (node.Text34883111.getData())?? && node.Text34883111.getData() != ""> 
111							<div class="blockquote font-family-narrow-normal position-relative mb-7"> 
112								${node.Text34883111.getData()} 
113							</div> 
114						</#if> 
115					</div> 
116				</#list> 
117			</#if> 
118			<#if FieldsGroup52652497.FieldsGroup17972647.getData() !=''> 
119				<div class="mb-md-7 mb-4"> 
120					<#list FieldsGroup52652497.FieldsGroup17972647.getSiblings() as node> 
121						<div class="mb-2"> 
122							<#if (node.Text21652173.getData())??> 
123								<a target="_blank" href="${node.Text21652173.getData()}" class="d-flex align-items-center font-family-narrow-normal"> 
124									<i class="icon-download-custom mr-3 h5 font-weight-normal mb-0"></i> 
125									<#if node.Text31160069.getData() !=''> 
126										${node.Text31160069.getData()} 
127									<#else> 
128										<@liferay.language key="download" /> 
129									</#if> 
130								</a> 
131							</#if> 
132						</div> 
133					</#list> 
134				</div> 
135			</#if>	 
136		</div> 
137	</div> 
138	 
139	<#if relatedProducts?has_content> 
140	<div class="bg-lighter"> 
141	<div class="container-fluid container-fluid-max-xl pt-7 pb-8 px-4"> 
142			<h5 class="font-weight-normal mb-5 text-center secondary"><@liferay.language key="related-products" /></h5> 
143			<div class="owl-carousel owl-theme" id="owl-carousel-rel-prod"> 
144				<#list relatedProducts as relatedProduct> 
145				<#assign productFeatures = relatedProduct.getProductFeatures(true) /> 
146				<#assign productBadges2 = relatedProduct.getBadges(2) /> 
147				<#assign productBadges1 = relatedProduct.getBadges(1) /> 
148				 
149					<div class="related-news related-prod mb-4 mb-md-0 h-100"> 
150						<div class="bg-white h-100 p-5 position-relative rounded-sm d-flex flex-column"> 
151							<#if productBadges2?has_content> 
152								<#assign productStatusStyle = productBadges2[0].getBackColor() /> 
153								<div class="status px-4 mb-5 pt-3" style="border-color:${productStatusStyle}!important"> 
154									<#list productBadges2 as productBadge2> 
155										<div class="border-0 badge" style="color: ${productBadge2.getBackColor()}">${productBadge2.getCode()}</div> 
156									</#list> 
157								</div> 
158							</#if> 
159							<div class="image d-flex align-items-end mb-5">							 
160								<a data-senna-off="true" href="${portal.getLayoutFullURL(relatedProduct.getFirstAvailableLayout(rcfCurrentPublication), themeDisplay)}" class="d-flex align-items-center justify-content-center"> 
161									<img src="${relatedProduct.getFirstAvailableCoverImageURL(rcfCurrentPublication, themeDisplay)}" class="w-100" /> 
162								</a> 
163							</div> 
164							<div class="status normal mb-4 pt-3"> 
165									<#list productBadges1 as productBadge1> 
166										<div class="border-0 badge" style="background-color: ${productBadge1.getBackColor()}; color: ${productBadge1.getFontColor()};">${productBadge1.getCode()}</div> 
167									</#list> 
168							</div> 
169							<div class="mb-4"> 
170								<div class="meta font-weight-medium underline mb-3"> 
171									${relatedProduct.getLineTitle(locale)} 
172								</div> 
173								<h4 class="font-weight-medium mb-3 text-uppercase">${relatedProduct.name}</h4> 
174								<p class="mb-3 font-weight-medium text-uppercase">${relatedProduct.getSubtitle(locale)}</p> 
175								<small class="mb-3 font-family-narrow-normal d-block"> 
176									<ul class="mb-5 font-family-narrow-normal px-0"> 
177										<#list productFeatures as productFeature> 
178											<li>${productFeature.getTitle(locale)} 
179										</#list> 
180									</ul> 
181								</small> 
182							</div> 
183							<div class="mt-auto"> 
184								<#if relatedProduct.hasLayout(rcfCurrentPublication)> 
185									<a data-senna-off="true" href="${portal.getLayoutFullURL(relatedProduct.getFirstAvailableLayout(rcfCurrentPublication), themeDisplay)}" class="btn btn-link-normal"> 
186										<@liferay.language key="learn-more" /> 
187									</a> 
188								</#if> 
189							</div> 
190							</div> 
191					</div> 
192				</#list> 
193			</div> 
194		</div> 
195		</div> 
196		</#if> 
197 
198	<#if relatedArticles?has_content> 
199		<div class="container-fluid container-fluid-max-xl pt-8 pb-4 px-4"> 
200			<h5 class="font-weight-normal mb-5 text-center"><@liferay.language key="other" /> <@liferay.language key="news" /></h5> 
201			<div class="row pt-7"> 
202				<#list relatedArticles as relatedArticle> 
203						<#assign categoryListEntry=assetCategoryLocalServiceUtil.getCategories("com.liferay.journal.model.JournalArticle",relatedArticle.resourcePrimKey) > 
204						<#assign imageURL = rcfTemplateHelper.getJournalArticleField(relatedArticle, locale, 'FieldsGroup52652497.Upload45315688', 'url') /> 
205						<#assign title = rcfTemplateHelper.getJournalArticleField(relatedArticle, locale, 'FieldsGroup52652497.Text78515013') /> 
206						<#assign entryTitle = relatedArticle.getTitle(locale) /> 
207						<#if validator.isNull(title)>  
208							<#assign title = entryTitle />  
209						</#if>  
210						<#assign summary = relatedArticle.getDescription(locale) /> 
211						<#assign text = rcfTemplateHelper.getJournalArticleField(relatedArticle, locale, 'FieldsGroup52652497.FieldsGroup95339333.RichText63313118') /> 
212						<#if validator.isNull(summary)>  
213							<#assign summary = text />  
214						</#if>  
215						<div class="col-md-6 related-news mb-5"> 
216							<div class="bg-white h-100"> 
217								<div class="image bg-secondary" style="background-image:url(${imageURL})"> 
218								</div> 
219								<div class="p-5 pb-8"> 
220									<div class="meta"> 
221												<span class="font-weight-medium pr-3 text-uppercase"> 
222													<#list categoryListEntry as category> 
223														${category.getName()} 
224													</#list> 
225												</span> 
226												<span> 
227														${relatedArticle.createDate?string["dd MMM yyyy"]} 
228												</span> 
229									</div> 
230									<h6 class="font-weight-medium mb-3"> 
231										${title} 
232									</h6> 
233									<small class="mb-5 font-family-narrow-normal d-block">${stringUtil.shorten(htmlUtil.stripHtml(summary), 250)}</small> 
234									<a href="/-/${relatedArticle.urlTitle}" class="btn btn-link-normal"> 
235										<@liferay.language key="learn-more" /> 
236									</a> 
237								</div> 
238							</div> 
239						</div> 
240				</#list> 
241			</div> 
242		</div> 
243	</#if> 
244</div> 
245<script> 
246	var owl = $("#owl-carousel-hp").owlCarousel({ 
247		loop:true, 
248    nav:false, 
249		dots:true, 
250		items:1 
251	}); 
252	$("#owl-carousel-rel-prod").owlCarousel({ 
253	    margin:20, 
254	    nav:false, 
255			dots:true, 
256			items:3, 
257			responsive : { 
258				0 : { 
259						items:1 
260				}, 
261				768 : { 
262						items:2 
263				}, 
264				1000 : { 
265						items:3 
266
267
268	}); 
269</script> 
270<style> 
271 
272	@media only screen and (min-width: 600px) and (max-width: 768px){ 
273		.news-detail #owl-carousel-hp .slide { 
274			height:400px 
275
276
277	@media only screen and (max-width: 600px){ 
278		.news-detail #owl-carousel-hp .slide { 
279			height:200px 
280
281
282</style> 
Pulsante Torna su con Immagine
...
Torna su
Follow us on
Icone allineate
Linkedin Facebook X Youtube Instagram Spotufy