Viaggi Studio in Irlanda
Programmi per Anno scolastico all'estero
Vedi tuttiProgrammi per Corsi Online
Vedi tuttiProgrammi per PCTO (per gruppi scuole)
Vedi tuttiProgrammi per Stage linguistico (per gruppi scuole)
Vedi tuttiProgrammi per Soggiorni studio 18+
Vedi tutti Si è verificato un errore nell'elaborarazione del modello.
Java method "com.sun.proxy.$Proxy85.getCategory(long)" threw an exception when invoked on com.sun.proxy.$Proxy85 object "com.liferay.asset.categories.internal.service.AssetCategoryPropertyAssetCategoryLocalServiceWrapper@5b29366d"; see cause exception in the Java stack trace.
----
FTL stack trace ("~" means nesting-related):
- Failed at: #return ACLS.getCategory(categoryId)... [in template "1724005" in function "getCategoryName" at line 215, column 5]
- Reached through: ${d40.getCategoryName(queryValues0[0]... [in template "383767#383802#2181264" at line 74, column 29]
---- 1<#import "${templatesPath}/1724005" as d40> 2 3<#assign 4 DLAppLocalServiceUtil = staticUtil["com.liferay.document.library.kernel.service.DLAppLocalServiceUtil"] 5 mkspAPI = serviceLocator.findService("eu.suggesto.suggestogui.service.SuggestoGuiLocalService") 6 favouriteServiceAPI = serviceLocator.findService("eu.suggesto.d40.builder.d40.service.FavoriteServiceLocalService") 7 wishlistObj = favouriteServiceAPI.getWishList(groupId, themeDisplay.getSessionId(), themeDisplay.getUserId()?string) 8 wishlist = wishlistObj.getJSONArray("data") 9 serverName = request.getServerName() 10 defLng = themeDisplay.getSiteDefaultLocale() 11 vocTipoProgramma = 1080085 12 vocSottocategoriaProgramma = 1088412 13 structureProgramma = 932161 14 structureSoggiorno = 402303 15 portletTitle = "" 16 btnLink = "#" 17 articleId = 1 18 portletClass = "d-none" 19 20 prefs = renderRequest.getPreferences() 21 structureKey = "" 22 classTypeIds = prefs.getValue("classTypeIds", "")!"" 23 classTypeIds = prefs.getValue("classTypeIds", "")!"" 24 orderByColumn1 = prefs.getValue("orderByColumn1", "")!"" 25 orderByColumn2 = prefs.getValue("orderByColumn2", "")!"" 26 orderByType1 = prefs.getValue("orderByType1", "")!"" 27 orderByType2 = prefs.getValue("orderByType2", "")!"" 28 queryValues0 = prefs.getValues("queryValues0", null)!"" 29 queryValues1 = prefs.getValues("queryValues1", null)!"" 30 f0 = prefs.getValue("queryValues0", "") 31 f1 = prefs.getValue("queryValues1", "") 32 queryAndOperator0 = prefs.getValue("queryAndOperator0", "") 33 queryAndOperator1 = prefs.getValue("queryAndOperator1", "") 34 numItems = prefs.getValue("delta", "10")!5 35/> 36 37<#if entries?has_content> 38 <#assign portletClass = ""> 39</#if> 40 41<#if classTypeIds?has_content> 42 <#assign structureKey = classTypeIds?number-1!> 43</#if> 44 45<#if queryValues0?has_content> 46 <#assign f0 = queryValues0?join(", ")> 47</#if> 48 49<#if queryValues1?has_content> 50 <#assign f1 = queryValues1?join(", ")> 51</#if> 52 53<#if structureKey == structureProgramma> 54 <#assign 55 portletTitle = "Programmi" 56 btnLink = "/ricerca-programmi" 57 /> 58</#if> 59<#if structureKey == structureSoggiorno> 60 <#assign 61 portletTitle = "Soggiorni studio" 62 btnLink = "/soggiorni-studio" 63 /> 64</#if> 65 66<section id="${d40.portletNamespace}" class="${portletClass}"> 67 <#if portletTitle?has_content> 68 <div class="container pt-5 my-5"> 69 <div class="d-flex justify-content-between"> 70 <p class="h1 display-5 text-center text-lg-left title-responsive title-large text-gradient jost font-weight-bolder text-uppercase my-auto"> 71 ${portletTitle} 72 73 <#if queryValues0?has_content && queryValues0[0]!= "1205870" > 74 per ${d40.getCategoryName(queryValues0[0]?number)} 75 </#if> 76 </p> 77 78 <a href="${btnLink}" class="see-all btn btn-gradient btn-lg d-none d-lg-flex px-5 ml-auto"> 79 <span class="my-auto">Vedi tutti</span> 80 </a> 81 </div> 82 </div> 83 </#if> 84 85 <#if entries?has_content> 86 <div class="swiper-container px-3 px-lg-0"> 87 <div class="card-row carousel-controls position-absolute half-float mb-5 mb-lg-0"> 88 <div class="autofit-col autofit-col-expand no-events"> 89 <section class="autofit-section"> 90 <div class="swiper-button-prev rounded-circle raised all-events"> 91 <i class="fas fa-caret-left text-white"></i> 92 </div> 93 </section> 94 </div> 95 <div class="autofit-col autofit-col-expand no-events"> 96 <section class="autofit-section"> 97 <div class="swiper-button-next rounded-circle raised all-events"> 98 <i class="fas fa-caret-right text-white"></i> 99 </div> 100 </section> 101 </div> 102 </div> 103 <div class="swiper-wrapper"> 104 105 <#list entries as entry> 106 <#assign 107 entry = entry 108 assetRenderer = entry.getAssetRenderer() 109 className = assetRenderer.getClassName() 110 entryTitle = htmlUtil.escape(assetRenderer.getTitle(themeDisplay.getLocale())) 111 /> 112 113 <#if className == "com.liferay.journal.model.JournalArticle"> 114 <#assign 115 journalArticle = assetRenderer.getArticle() 116 document = saxReaderUtil.read(journalArticle.getContent()) 117 rootElement = document.getRootElement() 118 articleId = journalArticle.articleId 119 /> 120 121 <#assign stringSelector = "dynamic-element[@name='anteprima']"> 122 <#assign xPathSelector = saxReaderUtil.createXPath(stringSelector)> 123 <#if xPathSelector.selectSingleNode(rootElement)??> 124 <#assign 125 immagine = xPathSelector.selectSingleNode(rootElement).getStringValue() 126 fileEntryId = assetRenderer.getClassPK() 127 /> 128 <#if immagine?trim?has_content> 129 <#assign 130 jsonField = jsonFactoryUtil.createJSONObject(immagine) 131 fileEntry = DLAppLocalServiceUtil.getFileEntryByUuidAndGroupId(jsonField.uuid, groupId) 132 immagine = "/documents/" + jsonField.groupId + "/" + fileEntry.folderId + "/" + jsonField.title + "/" + jsonField.uuid 133 /> 134 <#else> 135 <#assign immagine = "https://via.placeholder.com/450x300?text=Anteprima"> 136 </#if> 137 </#if> 138 139 <#assign stringSelector = "dynamic-element[@name='nome_scuola']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']"> 140 <#assign xPathSelector = saxReaderUtil.createXPath(stringSelector)> 141 <#if xPathSelector.selectSingleNode(rootElement)??> 142 <#assign nome = xPathSelector.selectSingleNode(rootElement).getStringValue()> 143 </#if> 144 145 <#assign viewUrl = mkspAPI.getArticleUrl(groupId, serverName, journalArticle.articleId, localeUtil.fromLanguageId(themeDisplay.getLocale()), defLng, "/placeholder")> 146 147 <div class="swiper-slide"> 148 <a href="${viewUrl}" class="card aspect-ratio aspect-ratio-3-to-4 card-item-first rounded invertible hoverable"> 149 <img data-src="${d40.getPrefix(immagine, 550, 365)}" loading="lazy" class="lazyload aspect-ratio-item-vertical-fluid fit-cover w-100 h-100" alt="${entryTitle}"> 150 <div class="overlay"></div> 151 <div class="d-flex card-img-overlay"> 152 <div class="w-100 mt-auto"> 153 <div class="mb-4"> 154 <p class="h2 text-truncate font-weight-bold text-white jost text-uppercase mb-0">${entryTitle}</p> 155 <p class="h2 text-white jost font-weight-regular"></p> 156 <p class="h2 font-weight-bold text-white jost text-uppercase mb-0"></p> 157 158 <#list d40.getEntryCategories(entry) as cat> 159 <#if cat.vocabularyId == vocTipoProgramma> 160 <div class="btn btn-gradient no-events px-2 py-1"> 161 ${cat.name} 162 163 <img src="${d40.icons_folder}/world_marker_white.svg" class="ml-1" height="25"> 164 </div> 165 </#if> 166 </#list> 167 </div> 168 </div> 169 </div> 170 </a> 171 <div class="triangle-top d-flex position-absolute rounded-right"> 172 <div class="mb-auto ml-auto p-3 p-lg-2 text-right"> 173 <#if isFavourite(articleId)> 174 <button class="btn btn-monospaced bg-transparent" onclick="removeFavourite('${articleId}')"> 175 <img src="${d40.icons_folder}/heart_filled.svg" width="35" height="35"> 176 </button> 177 <#else> 178 <button class="btn btn-monospaced bg-transparent" onclick="addFavourite('${articleId}')"> 179 <img src="${d40.icons_folder}/heart.svg" width="35" height="35"> 180 </button> 181 </#if> 182 </div> 183 </div> 184 </div> 185 </#if> 186 </#list> 187 </div> 188 </div> 189 <#else> 190 <div class="row"> 191 <div class="col-12 text-center"> 192 <p class="text-dark my-4">Nessun risultato</p> 193 </div> 194 </div> 195 </#if> 196 197 <div class="container text-center my-4"> 198 <a href="#" class="btn btn-gradient btn-lg d-lg-none px-5"> 199 <span class="my-auto">Vedi tutti</span> 200 </a> 201 </div> 202</section> 203 204<script> 205 document.addEventListener("DOMContentLoaded", function (){ 206 function addFavourite(elemId){ 207 Liferay.Service('/destinazione.favorite/add-to-wish-list', { 208 groupId: Liferay.ThemeDisplay.getScopeGroupId(), 209 sessionId: String(Liferay.ThemeDisplay.getSessionId()), 210 userId: String(Liferay.ThemeDisplay.getUserId()), 211 itemGroupId: 11, 212 itemId: String(elemId) 213 }, function(res) { 214 console.log("addToWishList response: ", res); 215 }).catch(function(err){ 216 console.error("Error adding to wishlist: ", err); 217 }); 218 219 Liferay.Portlet.refresh('#p_p_id${renderResponse.getNamespace()}'); 220 } 221 222 function removeFavourite(elemId){ 223 Liferay.Service('/destinazione.favorite/get-wish-list', { 224 groupId: Liferay.ThemeDisplay.getScopeGroupId(), 225 sessionId: String(Liferay.ThemeDisplay.getSessionId()), 226 userId: String(Liferay.ThemeDisplay.getUserId()), 227 }, function(res){ 228 console.log("getWishList response: ", res); 229 230 if(res.data){ 231 res.data.forEach(function(elem){ 232 if(elem.itemId == elemId){ 233 elemOid = elem._id.$oid; 234 235 Liferay.Service('/destinazione.favorite/delete-item-from-wish-list', { 236 oid: elemOid 237 }, function(res) { 238 console.log("deleteFromWishList response: ", res); 239 }).catch(function(err){ 240 console.error("Error removing from wishlist: ", err); 241 }); 242 } 243 }); 244 } 245 }).catch(function(err){ 246 console.log("Error adding to wishlist: ", err); 247 }); 248 249 Liferay.Portlet.refresh('#p_p_id${renderResponse.getNamespace()}'); 250 } 251 252 <#if entries?has_content> 253 new Swiper("#${d40.portletNamespace} .swiper-container", { 254 slidesPerView: 1, 255 spaceBetween: 25, 256 navigation: { 257 nextEl: '.swiper-button-next', 258 prevEl: '.swiper-button-prev', 259 }, 260 breakpoints: { 261 576: { 262 slidesPerView: 1, 263 spaceBetween: 20 264 }, 265 992: { 266 slidesPerView: 3, 267 spaceBetween: 25 268 }, 269 1200: { 270 slidesPerView: 5, 271 spaceBetween: 25 272 } 273 } 274 275 }); 276 </#if> 277 }); 278</script> 279 280<#function isFavourite articleId> 281 <#assign ret = false> 282 283 <#if (wishlist.length() > 0)> 284 <#list 0..wishlist.length()-1 as i> 285 <#if wishlist.getString(i)?has_content> 286 <#assign item = wishlist.getJSONObject(i)> 287 288 <#if item.itemId?has_content> 289 <#if item.itemId?number == articleId?number> 290 <#assign ret = true> 291 </#if> 292 </#if> 293 </#if> 294 </#list> 295 </#if> 296 297 <#return ret> 298</#function> Programmi per Work Experience - Stage
Vedi tuttiesempi di as xml: xml serveResource con templateId (chiave)
esempi di as json: json serveResource con templateId (chiave)
esempi di as json e siteId: json serveResource con siteid