Se ha producido un error al procesar la plantilla.
Denied access to method or field getParameter of class org.apache.catalina.core.ApplicationHttpRequest
----
FTL stack trace ("~" means nesting-related):
- Failed at: #local paramValue = request.getParame... [in template "34352066712900#33336#65816767" in function "findMatchedItem" at line 48, column 5]
----
1<#--
2 LANGUAGE HEADER DROPDOWN
3 -->
4<#assign currentURL = themeDisplay.getURLCurrent()>
5<#assign baseURL = themeDisplay.getPortalURL()>
6<#assign relativeURL = currentURL?replace(baseURL, "")>
7
8<#assign translatableParams = ["ics", "ctn"] />
9<#assign matchedItemsCache = buildMatchedItemsCache(translatableParams, locale) />
10
11<#assign desc = themeDisplay.getLanguageId()?split("_")?first >
12<div class="select-btn" id="language-select" role="button" aria-haspopup="listbox" aria-expanded="false" tabindex="0">
13 <#assign siteLanguage = themeDisplay.getLocale().getDisplayLanguage( themeDisplay.getLocale() )?cap_first>
14 <span
15 class="sBtn-text text-uppercase d-flex align-content-center align-items-center">${desc} <span
16 class="fa-solid fa-chevron-down" aria-hidden="true"></span></span>
17</div>
18 <ul class="options hide" role="listbox" aria-labelledby="language-select">
19 <li class="option actives" style="pointer-events:none" role="option" aria-selected="true">
20 <span class="option-text">
21 <svg aria-hidden="true" class="lexicon-icon mr-2 lexicon-icon-${themeDisplay.getLanguageId()?replace('_', '-')?lower_case}">
22 <use href="/o/classic-theme/images/clay/icons.svg#${themeDisplay.getLanguageId()?replace('_', '-')?lower_case}"></use>
23 </svg>
24 ${siteLanguage}
25 </span>
26 </li>
27 <#if entries?has_content>
28 <#list entries as curLanguage>
29
30 <#if !curLanguage.isSelected()>
31
32
33 <#assign entryHref = buildTranslatedHref(curLanguage.getURL(), curLanguage.getLanguageId(), translatableParams, matchedItemsCache) />
34 <li class="option" role="option"><span class="option-text"> <a href="${entryHref}" class="language-entry-short-text"
35 lang="${curLanguage.getLanguageId()}">${curLanguage.getLongDisplayName()?capitalize}</a> </span></li>
36
37 </#if>
38 </#list>
39 </#if>
40</ul>
41
42
43<#-- ============================================================
44 Traduccion de parametros de la URL al cambiar de idioma
45 ============================================================ -->
46
47<#function findMatchedItem paramName locale>
48 <#local paramValue = request.getParameter(paramName)! />
49 <#if !paramValue?has_content>
50 <#return "" />
51 </#if>
52
53 <#local paramValueTrim = paramValue?trim />
54 <#local paramType = paramName?upper_case />
55 <#local endpointURL = "/c/selectoptions/?languageId=" + locale?string + "&sort=name:asc&filter=optionsType eq '" + paramType + "'" />
56 <#local optionsResponse = restClient.get(endpointURL) />
57
58 <#list optionsResponse.items![] as item>
59 <#local valueI18n = item.value_i18n![] />
60 <#local found = false />
61
62 <#list valueI18n?keys as key>
63 <#if valueI18n[key]! == paramValueTrim>
64 <#local found = true />
65 <#break />
66 </#if>
67 </#list>
68
69 <#if !found && (item.value!"") == paramValueTrim>
70 <#local found = true />
71 </#if>
72
73 <#if found>
74 <#return item />
75 </#if>
76 </#list>
77
78 <#return "" />
79</#function>
80
81<#function buildMatchedItemsCache paramNames locale>
82 <#local cache = {} />
83 <#list paramNames as paramName>
84 <#local cache = cache + {paramName: findMatchedItem(paramName, locale)} />
85 </#list>
86 <#return cache />
87</#function>
88
89<#function translateParamInURL originalURL paramName targetLanguageId matchedItemsCache>
90
91 <#local matchedItem = matchedItemsCache[paramName]!"" />
92
93 <#if !matchedItem?has_content>
94 <#return originalURL />
95 </#if>
96
97 <#local translatedValue =
98 matchedItem.value_i18n[targetLanguageId]!matchedItem.value!"" />
99
100 <#if !translatedValue?has_content>
101 <#return originalURL />
102 </#if>
103
104 <#local encodedValue = urlCodec.encodeURL(translatedValue) />
105
106 <#return originalURL?replace(
107 paramName + "%3D[^&]*",
108 paramName + "%3D" + encodedValue,
109 "r"
110 ) />
111
112</#function>
113
114<#function buildTranslatedHref originalURL targetLanguageId paramNames matchedItemsCache>
115 <#local resultURL = originalURL />
116
117 <#list paramNames as paramName>
118 <#local resultURL = translateParamInURL(resultURL, paramName, targetLanguageId, matchedItemsCache) />
119 </#list>
120
121 <#return resultURL />
122</#function>
123
124<#-- ============================================================ -->
125
126<script>
127 $(document).ready(function () {
128 // Toggle el estado del menu de idiomas
129 $('.select-btn').on('click', function () {
130 var expanded = $(this).attr('aria-expanded') === 'true';
131 $(this).attr('aria-expanded', !expanded);
132 $('.options').toggleClass('hide', expanded);
133 });
134
135 // Acciones de teclado para la lupa
136 $('.select-btn').on('keydown', function (e) {
137 if (e.key === 'Enter' || e.key === ' ') {
138 e.preventDefault(); // Evitar desplazamiento al presionar espacio
139 $(this).click(); // Simula el click para abrir/cerrar el menu
140 }
141 });
142
143 // Cerrar el menu al hacer clic en cualquier parte fuera de el
144 $(document).on('click', function (event) {
145 if (!$(event.target).closest('.select-btn, .options').length) {
146 $('.options').addClass('hide');
147 $('.select-btn').attr('aria-expanded', 'false');
148 }
149 });
150
151 // Navegar con las teclas de flecha
152 let options = $('.option');
153 let selectedIndex = 0;
154
155 options.on('keydown', function (e) {
156 if (e.key === 'ArrowDown') {
157 selectedIndex = (selectedIndex + 1) % options.length;
158 options.eq(selectedIndex).focus();
159 }
160 if (e.key === 'ArrowUp') {
161 selectedIndex = (selectedIndex - 1 + options.length) % options.length;
162 options.eq(selectedIndex).focus();
163 }
164 if (e.key === 'Enter') {
165 window.location.href = $(this).find('a').attr('href'); // Redirige a la opcion seleccionada
166 }
167 });
168 });
169</script>
El producto se ha añadido a la cesta de la compra
-50% de descuento*
Si compras la misma norma UNE en distintos idiomas.
*
Dto. sobre el pvp inferior.
Ver condiciones
ISO 13227:2025
Petroleum products and lubricants — Rheological properties of lubricating greases — Determination of flow point using an oscillatory rheometer with a parallel-plate measuring system
Loading...
| Fecha edición: |
2025-03-18
En Vigor
|
|---|---|
| Idiomas disponibles: | Francés, Inglés |
| ICS: | 75.100 - Lubricantes, aceites industriales y productos relacionados |
| CTN: | 47356 |
Please enter a valid video URL.
The URL can point to any video file or a Youtube video.
El libro en palabras del autor
Ultricies magna feugiat malesuada sociosqu varius vivamus cubilia parturient, himenaeos vitae vehicula nam placerat netus urna platea, nostra rutrum felis mattis penatibus velit quisque.
ButtonNormas citadas
Libros relacionados
Normas relacionadas
Colecciones temáticas relacionadas
Preguntas frecuentes
¿Tienes alguna duda sobre nuestros productos?
Respuesta 2
Desde la web
Libros y normas










