Ratkaisut ja tiedotteet

Tiedotteita julkaistaan oikeusasiamiehen ratkaisuista, jotka ovat johtaneet toimenpiteeseen tai joilla voi muuten olla yleistä mielenkiintoa.
Virhe tapahtui näyttöpohjan käsittelyssä.
Java method "com.liferay.portlet.asset.model.impl.AssetEntryModelImpl.getTitle(String, boolean)" threw an exception when invoked on com.liferay.portlet.asset.model.impl.AssetEntryImpl object "{mvccVersion=6, ctCollectionId=0, entryId=755218, groupId=20184, companyId=20155, userId=236510, userName=Andrea Bergman, createDate=Thu Jun 05 07:29:35 GMT 2025, modifiedDate=Thu Jun 05 07:45:14 GMT 2025, classNameId=20109, classPK=755213, classUuid=30fc2b01-c99e-80ba-b95a-fb045d990953, classTypeId=260295, listable=true, visible=true, startDate=null, endDate=null, publishDate=Thu Jun 05 07:21:00 GMT 2025, expirationDate=null, mimeType=text/html, title=<?xml version='1.0' encoding='UTF-8'?><root available-locales=\"fi_FI,se_FI,en_GB,sv_SE,smn,sms\" default-locale=\"fi_FI\"><Title language-id=\"fi_FI\">Kantelun tekemistä oikeusasiamiehelle on helpotettu</Title><Title language-id=\"se_FI\">Guoddaleami dahkan riekteáššeolbmui lea álkidahtton</Title><Title language-id=\"en_GB\">Submitting a complaint to the Ombudsman has been facilitated</Title><Title language-id=\"sv_SE\">Processen för att göra ett klagomål till justitieombudsmannen har förenklats</Title><Title language-id=\"smn\">Riehtiäššiulmui kuoddâlem lii tohhum älkkeebin</Title><Title language-id=\"sms\">Kuâddõõttmõõžž raajjmõš vuõiggâdvuõttäʹššooumže lij hiâlptum</Title></root>, description=, summary=, url=, layoutUuid=, height=0, width=0, priority=0.0}"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign entryTitle = htmlUtil.escape(...  [in template "20155#20198#72902" at line 28, column 9]
----
1<#-- 
2Widget templates can be used to modify the look of a 
3specific application. 
4 
5Please use the left panel to quickly add commonly used variables. 
6Autocomplete is also available and can be invoked by typing "${". 
7--> 
8<#-- 
9Application display templates can be used to modify the look of a 
10specific application. 
11 
12Please use the left panel to quickly add commonly used variables. 
13Autocomplete is also available and can be invoked by typing "${". 
14--> 
15 
16<table class="eoa-asset-table"> 
17<#list entries as entry> 
18	<#assign entry = entry /> 
19 
20	<#assign assetRenderer = entry.getAssetRenderer() /> 
21	 
22	<#assign entryDefaultLanguageId = entry.getDefaultLanguageId() />	 
23<!-- edlID: ${entryDefaultLanguageId} --> 
24 
25	<#assign localeString = "${locale.getLanguage()}_${locale.getCountry()}" /> 
26	 
27	<!-- ls: ${localeString} --> 
28	<#assign entryTitle = htmlUtil.escape(entry.getTitle(localeString,false)) /> 
29	 
30 
31	<#assign entryTitleDefault = htmlUtil.escape(entry.getTitle("fi_FI",false)) /> 
32<!-- def: ${entryTitleDefault} ::: tit: ${entryTitle} -->	 
33	<#assign showThis = true /> 
34	 
35	<#if localeString == "fi_FI" && entryDefaultLanguageId != "fi_FI" && entryTitle == entryTitleDefault > 
36		<#assign showThis = false /> 
37	</#if> 
38		<!--  LocaleLang: ${locale.getLanguage()} --> 
39	<#if validator.isNull(entryTitle)> 
40		<#assign showThis = false /> 
41	</#if> 
42	<#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, entry) /> 
43	<#if assetLinkBehavior != "showFullContent"> 
44		<#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, entry, true) /> 
45		<#-- override the view in context link manually --> 
46        <#-- assign viewURL = "/${locale}/-/${assetRenderer.getUrlTitle()}" / --> 
47	</#if> 
48 
49	<#if showThis> 
50		<tr> 
51			<td class="eoa-asset-date"><@getMetadataField fieldName="publish-date" /></td> 
52			<td class="eoa-asset-title"><a href="${viewURL}">${entryTitle}</a></td> 
53		</tr> 
54	</#if> 
55 
56	 
57 
58</#list> 
59</table> 
60<#macro getDiscussion> 
61	<#if validator.isNotNull(assetRenderer.getDiscussionPath()) && (enableComments == "true")> 
62		<br /> 
63 
64		<#assign discussionURL = renderResponse.createActionURL() /> 
65 
66		${discussionURL.setParameter("struts_action", "/asset_publisher/" + assetRenderer.getDiscussionPath())} 
67 
68		<@liferay_ui["discussion"] 
69			className=entry.getClassName() 
70			classPK=entry.getClassPK() 
71			formAction=discussionURL?string 
72			formName="fm" + entry.getClassPK() 
73			ratingsEnabled=enableCommentRatings == "true" 
74			redirect=portalUtil.getCurrentURL(request) 
75			userId=assetRenderer.getUserId() 
76		/> 
77	</#if> 
78</#macro> 
79 
80<#macro getEditIcon> 
81	<#if assetRenderer.hasEditPermission(themeDisplay.getPermissionChecker())> 
82		<#assign redirectURL = renderResponse.createRenderURL() /> 
83 
84		${redirectURL.setParameter("struts_action", "/asset_publisher/add_asset_redirect")} 
85		${redirectURL.setWindowState("pop_up")} 
86 
87		<#assign editPortletURL = assetRenderer.getURLEdit(renderRequest, renderResponse, windowStateFactory.getWindowState("pop_up"), redirectURL)!"" /> 
88 
89		<#if validator.isNotNull(editPortletURL)> 
90			<#assign title = languageUtil.format(locale, "edit-x", entryTitle) /> 
91 
92			<@liferay_ui["icon"] 
93				image="edit" 
94				message=title 
95				url="javascript:Liferay.Util.openWindow({dialog: {width: 960}, id:'" + renderResponse.getNamespace() + "editAsset', title: '" + title + "', uri:'" + htmlUtil.escapeURL(editPortletURL.toString()) + "'});" 
96			/> 
97		</#if> 
98	</#if> 
99</#macro> 
100 
101<#macro getFlagsIcon> 
102	<#if enableFlags == "true"> 
103		<@liferay_ui["flags"] 
104			className=entry.getClassName() 
105			classPK=entry.getClassPK() 
106			contentTitle=entry.getTitle(locale) 
107			label=false 
108			reportedUserId=entry.getUserId() 
109		/> 
110	</#if> 
111</#macro> 
112 
113<#macro getMetadataField 
114	fieldName 
115
116	<#if stringUtil.split(metadataFields)?seq_contains(fieldName)> 
117		<span class="metadata-entry metadata-"${fieldName}"> 
118			<#assign dateFormat = "d.M.yyyy" /> 
119 
120			<#if fieldName == "author"> 
121				<@liferay.language key="by" /> ${portalUtil.getUserName(assetRenderer.getUserId(), assetRenderer.getUserName())} 
122			<#elseif fieldName == "categories"> 
123				<@liferay_ui["asset-categories-summary"] 
124					className=entry.getClassName() 
125					classPK=entry.getClassPK() 
126					portletURL=renderResponse.createRenderURL() 
127				/> 
128			<#elseif fieldName == "create-date"> 
129				${dateUtil.getDate(entry.getCreateDate(), dateFormat, locale)} 
130			<#elseif fieldName == "expiration-date"> 
131				${dateUtil.getDate(entry.getExpirationDate(), dateFormat, locale)} 
132			<#elseif fieldName == "modified-date"> 
133				${dateUtil.getDate(entry.getModifiedDate(), dateFormat, locale)} 
134			<#elseif fieldName == "priority"> 
135				${entry.getPriority()} 
136			<#elseif fieldName == "publish-date"> 
137				${dateUtil.getDate(entry.getPublishDate(), dateFormat, locale)} 
138			<#elseif fieldName == "tags"> 
139				<@liferay_ui["asset-tags-summary"] 
140					className=entry.getClassName() 
141					classPK=entry.getClassPK() 
142					portletURL=renderResponse.createRenderURL() 
143				/> 
144			<#elseif fieldName == "view-count"> 
145				<@liferay_ui["icon"] 
146					image="history" 
147				/> 
148 
149				${entry.getViewCount()} <@liferay.language key="views" /> 
150			</#if> 
151		</span> 
152	</#if> 
153</#macro> 
154 
155<#macro getPrintIcon> 
156	<#if enablePrint == "true" > 
157		<#assign printURL = renderResponse.createRenderURL() /> 
158 
159		${printURL.setParameter("struts_action", "/asset_publisher/view_content")} 
160		${printURL.setParameter("assetEntryId", entry.getEntryId()?string)} 
161		${printURL.setParameter("viewMode", "print")} 
162		${printURL.setParameter("type", entry.getAssetRendererFactory().getType())} 
163 
164		<#if (validator.isNotNull(assetRenderer.getUrlTitle()))> 
165			<#if (assetRenderer.getGroupId() != themeDisplay.getScopeGroupId())> 
166				${printURL.setParameter("groupId", assetRenderer.getGroupId()?string)} 
167			</#if> 
168 
169			${printURL.setParameter("urlTitle", assetRenderer.getUrlTitle())} 
170		</#if> 
171 
172		${printURL.setWindowState("pop_up")} 
173 
174		<@liferay_ui["icon"] 
175			image="print" 
176			message="print" 
177			url="javascript:Liferay.Util.openWindow({id:'" + renderResponse.getNamespace() + "printAsset', title: '" + languageUtil.format(locale, "print-x-x", ["hide-accessible", entryTitle]) + "', uri: '" + htmlUtil.escapeURL(printURL.toString()) + "'});" 
178		/> 
179	</#if> 
180</#macro> 
181 
182<#macro getRatings> 
183	<#if (enableRatings == "true")> 
184		<div class="asset-ratings"> 
185			<@liferay_ui["ratings"] 
186				className=entry.getClassName() 
187				classPK=entry.getClassPK() 
188			/> 
189		</div> 
190	</#if> 
191</#macro> 
192 
193<#macro getRelatedAssets> 
194	<#if enableRelatedAssets == "true"> 
195		<@liferay_ui["asset-links"] 
196			assetEntryId=entry.getEntryId() 
197		/> 
198	</#if> 
199</#macro> 
200 
201<#macro getSocialBookmarks> 
202	<#if enableSocialBookmarks == "true"> 
203		<@liferay_ui["social-bookmarks"] 
204			displayStyle="${socialBookmarksDisplayStyle}" 
205			target="_blank" 
206			title=entry.getTitle(locale) 
207			url=viewURL 
208		/> 
209	</#if> 
210</#macro>