Hemos renombrado las ofertas comerciales de Liferay de LXC a Liferay SaaS, de LXC - SM a Liferay PaaS y de DXP a Liferay Self-Hosted. Para más información, haz clic aquí.

Release Notes

Esta sección contiene información sobre cambios rupturistas (breaking changes) en funcionalidades y capacidades de un DXP listo para usar. Para cambios rupturistas o código interno, verifica este enlace.

Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> restArticle.taxonomyCategoryBriefs  [in template "2010607#2010649#24589772" at line 202, column 72]

----
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: #list restArticle.taxonomyCategoryBri...  [in template "2010607#2010649#24589772" at line 202, column 65]
----
1<style> 
2	.container-breaking-change-search { 
3		a.link-container:hover, a.link-container.hover { 
4			background-color: var(--color-action-primary-hover-10, #EDF3FE); 
5			border: 0.0625rem solid var(--link-hover-color, #0053F0); 
6			color: var(--link-hover-color, #0053F0); 
7			text-decoration: none; 
8
9 
10		.empty-container { 
11			background-color: var(--color-neutral-0); 
12			border-color: var(--color-neutral-3); 
13			border-radius: var(--border-radius); 
14			border-style: solid; 
15			border-width: 0.0625rem; 
16			margin-top: 0.8rem; 
17			padding: 1.5rem 1.5rem 0.0625rem 1.5rem; 
18
19 
20		.empty-message-title { 
21			color: var(--color-neutral-10, #282934); 
22			font-size: 1.125rem; 
23			font-weight: 600; 
24			line-height: 1.25rem; 
25
26 
27		.empty-result-message { 
28			align-items: center; 
29			margin: 5rem auto; 
30
31 
32		.icon-container { 
33			background-color: var(--color-brand-primary-lighten-5, #E7EFFF); 
34			border-radius: 0.5rem; 
35			margin-bottom: 2rem; 
36			max-width: 9rem; 
37
38 
39		.link-container { 
40			background-color: var(--color-brand-primary-lighten-6, #FBFCFE); 
41			border: 0.0625rem solid var(--color-brand-primary-lighten-5, #E7EFFF); 
42			border-radius: 0.625rem; 
43			color: var(--color-action-neutral-default, #2B3A4B); 
44			font-size: 0.875rem; 
45			padding: 0.75rem; 
46			word-break: break-word; 
47
48 
49		.link-container > svg { 
50			fill: var(--link-color, #0B5FFF); 
51			height: 0.75rem; 
52			width: 0.75rem; 
53
54 
55		.link-container span { 
56			padding-left: 0.5rem; 
57
58 
59		.pagination-bar { 
60			align-items: flex-start; 
61			display: flex; 
62			gap: 1rem; 
63
64 
65		.pagination-bar .dropdown.pagination-items-per-page { 
66			align-items: flex-start; 
67			display: flex; 
68
69 
70		.pagination-bar .dropdown.pagination-items-per-page .dropdown-toggle.page-link { 
71			align-items: center; 
72			border-width: 0rem; 
73			color: var(--color-action-neutral-default, #2B3A4B); 
74			display: flex; 
75			font-size: 0.875rem; 
76			font-style: normal; 
77			font-weight: 600; 
78			gap: 0.25rem; 
79			justify-content: center; 
80			line-height: 1rem; 
81			text-align: center; 
82
83 
84		.pagination-bar .dropdown.pagination-items-per-page .dropdown-toggle.page-link .c-inner { 
85			align-items: center; 
86			display: flex; 
87			height: 1rem; 
88			justify-content: center; 
89
90 
91		.pagination-bar .dropdown.pagination-items-per-page .dropdown-toggle.page-link .c-inner .lexicon-icon.lexicon-icon-caret-double-l { 
92			align-items: center; 
93			display: flex; 
94			flex-shrink: 0; 
95			height: 1rem; 
96			justify-content: center; 
97			width: 1rem; 
98
99 
100		.pagination-bar .pagination { 
101			align-items: flex-start; 
102			display: flex; 
103			gap: 0.5rem; 
104			justify-content: center; 
105
106 
107		.pagination-bar .pagination .page-item .page-link { 
108			align-items: center; 
109			border-radius: 0.375rem; 
110			border-width: 0rem; 
111			color: var(--color-action-neutral-default, #2B3A4B); 
112			display: flex; 
113			font-size: 0.875rem; 
114			font-style: normal; 
115			font-weight: 600; 
116			gap: 0.25rem; 
117			justify-content: center; 
118			line-height: 1rem; 
119			min-width: 2rem; 
120			padding: 0.5rem; 
121			text-align: center; 
122
123 
124		.pagination-bar .pagination .page-item.active .page-link { 
125			background: var(--color-action-neutral-active-20, #D5D8DB); 
126
127 
128		.pagination-bar .pagination-results { 
129			align-items: flex-start; 
130			color: var(--color-neutral-10, #282934); 
131			display: flex; 
132			font-size: 0.8125rem; 
133			font-style: normal; 
134			font-weight: 400; 
135			gap: 0.25rem; 
136			line-height: 1rem; 
137			margin-top: 0.5rem; 
138
139 
140		.search-icon>svg { 
141			fill: var(--link-color, #0B5FFF); 
142			height: 2rem; 
143			margin: 1.5rem 3.5rem; 
144			width: 2rem; 
145
146 
147		.search-results .search-results-entry { 
148			align-items: flex-start; 
149			display: flex; 
150			flex-direction: column; 
151			gap: 0.25rem; 
152
153 
154		.search-results .search-results-entry .search-results-entry-title { 
155			color: var(--color-neutral-10, #282934); 
156			border-radius: 0.625rem; 
157			font-size: 1.125rem; 
158			font-style: normal; 
159			font-weight: 600 !important; 
160			line-height: 1.25rem; 
161			padding: 1rem 1rem 1rem 0.625rem; 
162
163 
164		.search-results .search-results-entry .search-results-entry-title .search-results-entry-content { 
165			color: var(--color-neutral-10, #282934); 
166			font-size: 1rem; 
167			font-style: normal; 
168			font-weight: 400; 
169			line-height: 1.5rem; 
170			margin-top: 1rem; 
171
172 
173		.search-results .search-results-entry .search-results-entry-title:hover { 
174			background: var(--color-action-primary-hover-10, #EDF3FE); 
175
176 
177		.search-results .solid { 
178			border-top: 0.0625rem solid var(--color-neutral-2, #E2E2E4); 
179
180
181</style> 
182 
183<div class="container-breaking-change-search"> 
184	<div class="pt-3 search-results" id="searchResults"> 
185		<#if entries?has_content> 
186			<#list entries as searchEntry> 
187				<#assign restArticle = restClient.get("/headless-delivery/v1.0/structured-contents/${searchEntry.getClassPK()}?fields=contentFields,relatedContents,taxonomyCategoryBriefs,title&nestedFields=embeddedTaxonomyCategory") /> 
188 
189				<#if restArticle?has_content> 
190					<div class="align-items-stretch search-results-entry"> 
191						<div 
192							aria-controls="collapsePanelId-${searchEntry.getClassPK()}" 
193							aria-expanded="false" 
194							class="align-items-center btn btn-unstyled collapse-icon collapse-icon-middle collapsed d-flex font-weight-bold p-3 panel-header panel-header-link search-results-entry-title text-decoration-none unstyled" 
195							data-target="#collapsePanelId-${searchEntry.getClassPK()}" 
196							data-toggle="liferay-collapse" 
197
198							<span class="mr-5"> 
199								${restArticle.title} 
200							</span> 
201							<span class="ml-auto mr-5"> 
202								<#list restArticle.taxonomyCategoryBriefs as taxonomyCategoryBrief> 
203									<#assign taxonomyVocabularyName = taxonomyCategoryBrief.embeddedTaxonomyCategory.parentTaxonomyVocabulary.name /> 
204 
205									<#if taxonomyVocabularyName == "Product Capabilities"> 
206										<span class="font-weight-normal label label-secondary label-tonal-info m-0 px-2 text-paragraph-sm"> 
207											${taxonomyCategoryBrief.taxonomyCategoryName} 
208										</span> 
209									</#if> 
210								</#list> 
211							</span> 
212							<span class="collapse-icon-closed"> 
213								<@clay.icon symbol="angle-right" /> 
214							</span> 
215							<span class="collapse-icon-open"> 
216								<@clay.icon symbol="angle-down" /> 
217							</span> 
218						</div> 
219 
220						<div class="collapse panel-collapse pl-3 pr-3" id="collapsePanelId-${searchEntry.getClassPK()}"> 
221							<div class="description search-results-entry-content"> 
222								<#assign 
223									url = "" 
224									urlTitle = "" 
225								/> 
226 
227								<#list restArticle.contentFields as fieldData> 
228									<#if fieldData.contentFieldValue.data?has_content && validator.isNotNull(fieldData.contentFieldValue.data)> 
229										<#assign webContentData = fieldData.contentFieldValue.data /> 
230 
231										<div class="mb-3"> 
232											${webContentData} 
233										</div> 
234									</#if> 
235 
236									<#list fieldData.nestedContentFields as nestedFieldData> 
237										<#if nestedFieldData.contentFieldValue.data?has_content> 
238											<#if nestedFieldData.label?contains("?")> 
239												<#assign description = nestedFieldData.contentFieldValue.data /> 
240 
241												<div> 
242													${description} 
243												</div> 
244											</#if> 
245 
246											<#if nestedFieldData.label?contains("Title")> 
247												<#assign urlTitle = nestedFieldData.contentFieldValue.data /> 
248											<#else> 
249												<#assign url = nestedFieldData.contentFieldValue.data /> 
250											</#if> 
251										<#else> 
252											<#assign urlTitle = "" /> 
253										</#if> 
254									</#list> 
255 
256									<#if urlTitle?has_content && validator.isNotNull(urlTitle)> 
257										<div class="d-flex mb-2"> 
258											<a class="link-container" href="${url}" target="_blank"> 
259												<@clay["icon"] symbol="link" /> 
260 
261												<span> 
262													${urlTitle} 
263												</span> 
264											</a> 
265										</div> 
266									</#if> 
267								</#list> 
268							</div> 
269						</div> 
270					</div> 
271 
272					<hr class="solid"> 
273				</#if> 
274			</#list> 
275		<#else> 
276			<div class="empty-container"> 
277				<div class="d-flex empty-result-message flex-column"> 
278					<div class="icon-container"> 
279						<div class="search-icon"> 
280							<@clay["icon"] symbol="search-experiences" /> 
281						</div> 
282					</div> 
283 
284					<span class="empty-message-title text-center"> 
285						${languageUtil.get(locale, "there-are-no-breaking-changes-in-out-of-the-box-features-and-capabilities-for-this-quarterly-release", "There are no breaking changes in out-of-the-box features and capabilities for this quarterly release.")} 
286					</span> 
287				</div> 
288			</div> 
289		</#if> 
290	</div> 
291</div>