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 55, 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 <p>url:${curLanguage.getURL()}</p>
33 <p>parameter ics:${request.getParameter("ics")}</p>
34 <p>matchedItem en_us:${matchedItemsCache["ics"].value_i18n["en_US"]}</p>
35 <p>${urlCodec}</p>
36 <p>${urlCodec.decodeURL("%2Fnormas%3Fics%3Dtest")}</p>
37 <p>${urlCodec.encodeURL("01 - General Aspects. Terminology.")}</p>
38
39
40 <#assign entryHref = buildTranslatedHref(curLanguage.getURL(), curLanguage.getLanguageId(), translatableParams, matchedItemsCache) />
41 <li class="option" role="option"><span class="option-text"> <a href="${entryHref}" class="language-entry-short-text"
42 lang="${curLanguage.getLanguageId()}">${curLanguage.getLongDisplayName()?capitalize}</a> </span></li>
43
44 </#if>
45 </#list>
46 </#if>
47</ul>
48
49
50<#-- ============================================================
51 Traduccion de parametros de la URL al cambiar de idioma
52 ============================================================ -->
53
54<#function findMatchedItem paramName locale>
55 <#local paramValue = request.getParameter(paramName)! />
56 <#if !paramValue?has_content>
57 <#return "" />
58 </#if>
59
60 <#local paramValueTrim = paramValue?trim />
61 <#local paramType = paramName?upper_case />
62 <#local endpointURL = "/c/selectoptions/?languageId=" + locale?string + "&sort=name:asc&filter=optionsType eq '" + paramType + "'" />
63 <#local optionsResponse = restClient.get(endpointURL) />
64
65 <#list optionsResponse.items![] as item>
66 <#local valueI18n = item.value_i18n![] />
67 <#local found = false />
68
69 <#list valueI18n?keys as key>
70 <#if valueI18n[key]! == paramValueTrim>
71 <#local found = true />
72 <#break />
73 </#if>
74 </#list>
75
76 <#if !found && (item.value!"") == paramValueTrim>
77 <#local found = true />
78 </#if>
79
80 <#if found>
81 <#return item />
82 </#if>
83 </#list>
84
85 <#return "" />
86</#function>
87
88<#function buildMatchedItemsCache paramNames locale>
89 <#local cache = {} />
90 <#list paramNames as paramName>
91 <#local cache = cache + {paramName: findMatchedItem(paramName, locale)} />
92 </#list>
93 <#return cache />
94</#function>
95
96<#function translateParamInURL originalURL paramName targetLanguageId matchedItemsCache>
97
98 <#local paramValue = request.getParameter(paramName)! />
99 <#local matchedItem = matchedItemsCache[paramName]!"" />
100
101 <#if !paramValue?has_content || !matchedItem?has_content>
102 <#return originalURL />
103 </#if>
104
105 <#local newValue = matchedItem.value_i18n[targetLanguageId]!matchedItem.value!paramValue />
106
107 <#if !newValue?has_content>
108 <#return originalURL />
109 </#if>
110
111 <#local redirectEncoded = originalURL?replace(
112 ".*redirect=([^&]+).*",
113 "$1",
114 "r"
115 ) />
116
117 <#local redirectDecoded = urlCodec.decodeURL(redirectEncoded) />
118
119 <#local translatedRedirect = redirectDecoded?replace(
120 paramName + "=" + paramValue,
121 paramName + "=" + newValue
122 ) />
123
124 <#local translatedRedirectEncoded = urlCodec.encodeURL(translatedRedirect) />
125
126 <#return originalURL?replace(
127 redirectEncoded,
128 translatedRedirectEncoded
129 ) />
130
131</#function>
132
133<#function buildTranslatedHref originalURL targetLanguageId paramNames matchedItemsCache>
134 <#local resultURL = originalURL />
135
136 <#list paramNames as paramName>
137 <#local resultURL = translateParamInURL(resultURL, paramName, targetLanguageId, matchedItemsCache) />
138 </#list>
139
140 <#return resultURL />
141</#function>
142
143<#-- ============================================================ -->
144
145<script>
146 $(document).ready(function () {
147 // Toggle el estado del menu de idiomas
148 $('.select-btn').on('click', function () {
149 var expanded = $(this).attr('aria-expanded') === 'true';
150 $(this).attr('aria-expanded', !expanded);
151 $('.options').toggleClass('hide', expanded);
152 });
153
154 // Acciones de teclado para la lupa
155 $('.select-btn').on('keydown', function (e) {
156 if (e.key === 'Enter' || e.key === ' ') {
157 e.preventDefault(); // Evitar desplazamiento al presionar espacio
158 $(this).click(); // Simula el click para abrir/cerrar el menu
159 }
160 });
161
162 // Cerrar el menu al hacer clic en cualquier parte fuera de el
163 $(document).on('click', function (event) {
164 if (!$(event.target).closest('.select-btn, .options').length) {
165 $('.options').addClass('hide');
166 $('.select-btn').attr('aria-expanded', 'false');
167 }
168 });
169
170 // Navegar con las teclas de flecha
171 let options = $('.option');
172 let selectedIndex = 0;
173
174 options.on('keydown', function (e) {
175 if (e.key === 'ArrowDown') {
176 selectedIndex = (selectedIndex + 1) % options.length;
177 options.eq(selectedIndex).focus();
178 }
179 if (e.key === 'ArrowUp') {
180 selectedIndex = (selectedIndex - 1 + options.length) % options.length;
181 options.eq(selectedIndex).focus();
182 }
183 if (e.key === 'Enter') {
184 window.location.href = $(this).find('a').attr('href'); // Redirige a la opcion seleccionada
185 }
186 });
187 });
188</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
IEC TS 62257-9-5:2024
Renewable energy off-grid systems – Part 9-5: Integrated systems – Laboratory evaluation of stand-alone renewable energy products for rural electrification
Loading...
| Fecha edición: |
2024-12-11
En Vigor
|
|---|---|
| Idiomas disponibles: | Inglés |
| ICS: | 27.160 - Energía solar |
| CTN: | 1276 |
|
Anulaciones Normas |
Anula a IEC TS 62257-9-5:2018 |
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










