The following has evaluated to null or missing:
==> qout [in template "12187455#12187494#40958810" at line 46, column 106]
----
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: ${qout} [in template "12187455#12187494#40958810" at line 46, column 104]
----
1<style>
2video.imgCarrousel {
3 width: 100%;
4}
5.carousel-item{
6 height: 300px;
7}
8</style>
9
10
11
12#set($titulo = $reserved-article-title.data)
13#set($tituloBanner = $infoBanner.getChild('tituloBanner'))
14#set($subtituloBanner = $infoBanner.getChild('subtituloBanner'))
15#set($enlaceTextoBanner = $infoBanner.getChild('enlaceTextoBanner'))
16#set ($qout = '"')
17
18## Obtenemos los datos del enlace
19#set($lnkText = $enlaceTextoBanner.getData())
20#set($lnkExt = $enlaceTextoBanner.getChild('enlaceExtBanner').getData())
21#set($lnkInt = $enlaceTextoBanner.getChild('enlaceIntBanner').getFriendlyUrl())
22#set($lnkTarget = $enlaceTextoBanner.getChild('targetBanner').getData())
23#set($lnkExists = $validator.isNotNull($lnkInt) || $validator.isNotNull($lnkExt))
24#set($lnkURL = '')
25#set($openHtmlLink = '')
26#set($closeHtmlLink = '')
27#set($htmlButtonLink = '')
28
29
30#if($lnkExists)
31 #if($validator.isNotNull($enlaceTextoBanner.getChild('accesibilidadBanner').getData()))
32 #set($tituloAcc = $enlaceTextoBanner.getChild('accesibilidadBanner').getData())
33 #else
34 #set($tituloAcc = $enlaceTextoBanner.getData())
35 #end
36
37 ## Obtenemos la URL del enlace
38 #if($validator.isNotNull($lnkExt))
39 #set($lnkURL = $lnkExt)
40 #elseif ($validator.isNotNull($lnkInt))
41 #set($lnkURL = $lnkInt)
42 #end
43
44 ## Si no hay texto de enlace enlazamos las img/videos
45 #if($validator.isNull($lnkText))
46 #set($openHtmlLink = "<a href='$lnkURL' title='$tituloAcc' target='$lnkTarget' onClick=${qout}ga('send','event','Banner_Slider_$titulo','Link','$lnkURL')${qout}>")
47 #set($closeHtmlLink = "</a>")
48 #end
49#end
50
51## VERSION DESKTOP ##
52#set($formatoDesktop = $desktopItems.getChild('formatoDesktop'))
53#set($imagenVideoDesktop = $desktopItems.getChild('imagenVideoDesktop'))
54#set($avanzadoDesktop = $desktopItems.getChild('avanzadoDesktop'))
55
56#set($altDesktop = $imagenVideoDesktop.getChild('accesibilityDesktop').getData())
57#if($validator.isNull($altDesktop).getData())
58 #set($altDesktop = "")
59#end
60
61#set($formatoTablet = $tabletItems.getChild('formatoTablet'))
62#set($imagenVideoTablet = $tabletItems.getChild('imagenVideoTablet'))
63#set($imagenMobileTablet = $mobileItems.getChild('imagenVideoMobile'))
64#if($stringUtil.matches($formatoDesktop.getData(),"imagen"))
65 $openHtmlLink
66 $closeHtmlLink
67#elseif($stringUtil.matches($formatoDesktop.getData(),"video"))
68 #if($stringUtil.matches($formatoTablet.getData(),"imagen"))
69 $openHtmlLink
70 <video autoplay muted loop poster="$imagenVideoTablet.getData()" class="imgCarrousel d-none d-lg-block">
71 <source src="$imagenVideoDesktop.getData()" type="video/mp4">
72 </video>
73 $closeHtmlLink
74 #else
75 $openHtmlLink
76 <video autoplay muted loop class="imgCarrousel d-none d-lg-block">
77 <source src="$imagenVideoDesktop.getData()" type="video/mp4">
78 </video>
79 $closeHtmlLink
80 #end
81
82#elseif($stringUtil.matches($formatoDesktop.getData(),"avanzado"))
83 #set( $g = "a onClick=${qout}ga('send','event','Banner_Slider_${titulo}','Link','$lnkURL')${qout} href")
84 #set( $avanzado = $avanzadoDesktop.getData().replace("a href", ${g}) )
85 <div class="imgCarrousel d-none d-lg-block">
86 $avanzado
87 </div>
88#end
89
90
91## Establecemos la forma de pintar la cabecera
92#if($validator.isNotNull($tituloBanner.getData()) && !$validator.isEmpty($tituloBanner.getData()))
93 <ul class="carousel-caption">
94
95 <li class="titleSlide">
96 $tituloBanner.getData()
97 </li>
98
99 <li class="captionSlide">
100 $subtituloBanner.getData()
101 </li>
102
103 ## Enlace
104 #if($validator.isNotNull($lnkText))
105 <li class="btn"
106 onmouseover="javascript:this.style.textDecoration= 'underline'"
107 onmouseout="javascript:this.style.textDecoration= 'none'">
108
109 <a href="$lnkURL" title="$tituloAcc" target="$lnkTarget">$lnkText</a>
110 </li>
111 #end
112 </ul>
113
114#elseif($validator.isNotNull($lnkText))
115 <ul class="carousel-caption only-button">
116 <li class="btn"
117 onmouseover="javascript:this.style.textDecoration= 'underline'"
118 onmouseout="javascript:this.style.textDecoration= 'none'">
119
120 <a href="$lnkURL" title="$tituloAcc" target="$lnkTarget">$lnkText</a>
121 </li>
122 </ul>
123#end
124
125
126<script>
127
128var elements = document.getElementsByClassName("imagenBanner");
129var names = '';
130for(var i = 0; i < elements.length; i++) {
131 if(elements[i].id=="$reserved-article-title.data"){
132 if (window.screen.availWidth<400){
133 elements[i].src = "$imagenMobileTablet.getData()";
134 } else if(window.screen.availWidth>400 && window.screen.availWidth<480){
135 elements[i].src = "$imagenVideoTablet.getData()";
136 } else{
137 elements[i].src = "$imagenVideoDesktop.getData()";
138 }}
139}
140
141
142</script>
Sustainability is the essence of Aqualia
The 2030 Agenda steers our course and a large part of the strategic lines on which we are working. While the various crises to have occurred in recent years have tested the commitment of nations to the objectives of the 2030 Agenda, Aqualia remains firmly aligned with the SDGs, the fight against climate change, the efficient management of the integral water cycle and the attention and care for people, both within and beyond the walls of our company.
Water is directly affected by the climate crisis and so is water resource management, by extension. At Aqualia, as a company specialising in end-to-end water cycle management, we are already well aware of this challenge. This year, we have worked hard to consolidate our position in the international arena, a milestone made possible thanks to the adaptability of our employees and our ability to come up with innovative solutions wherever we operate.
Strategic Sustainability Plan: A robust, transversal roadmap with a positive impact
In 2021, Aqualia published its first three-year Strategic Sustainability Plan, enabling us to pursue projects that will drive the sustainable management of water from all angles: environmental, social and governance.
Aqualia’s 2024–2026 Strategic Sustainability Plan embodies the firm commitments that Aqualia has embraced in the daily running of the business. A pledge to sustainability as the way to generate a model of prosperity and wellbeing that will help to build a fairer, more humane and sustainable planet.
El Plan establece 43 objetivos, articulados en torno a nuestras 7 Líneas Estratégicas, dirigidos a nuestra actividad, nuestra cadena de suministro, nuestros empleados y a la sociedad.
The Plan contains 43 objectives, all built around our seven Strategic Lines, targeting our business, our supply chain, our employees and society. Download Aqualia’s Strategic Sustainability Plan by clicking here.

Strategic materiality
We have carried out a process of active and continuous listening to our stakeholders. This work has enabled us to identify the most material environmental, social and governance issues; a key exercise that we take into account during our decision-making.
This process of constant and conscious listening, which we carry out every year, is a further show of Aqualia’s commitment to its stakeholders. Moreover, the initiatives generated through this dialogue help us to maximise the positive and minimise the negative impacts of our activity.
We are now at a key juncture when it comes to sustainability reporting; significant changes are afoot with the ultimate aim of improving methodological accuracy and transparency in reporting information from this triple angle (environmental, social and governance). Ultimately, these are changes with which Aqualia is appreciably aligned and from which it stands to benefit.
The main component of this new framework is the recent European Sustainability Disclosure Directive (CSRD) and its European Sustainability Reporting Standards (ESRS), which call for a more comprehensive approach to ESG performance and governance.
For more information on this process carried out by Aqualia in 2023, click here.