València Joaquín Sorolla

La estación de València Joaquín Sorolla afronta una transformación integral para adaptarse al crecimiento del tráfico ferroviario y al desarrollo del Corredor Mediterráneo. Esta actuación reforzará su papel como uno de los principales nodos de alta velocidad del arco mediterráneo, aumentando su capacidad operativa y mejorando la experiencia de los viajeros.
El proyecto contempla la ampliación de la playa de vías hasta alcanzar once vías de ancho estándar. Además, la remodelación permitirá modernizar las instalaciones y preparar la estación para responder a las necesidades futuras de movilidad ferroviaria.
Conocer el proceso de transformación de la estación y los trabajos en el Canal de Acceso a València.
-
lunes 10/08/2026
-
Hora actual - 13:43 h
-
Estado de la Red
Salidas
| Hora de salida | Destino | Tren | Vía |
|---|
Llegadas
| Hora de llegada | Origen | Tren | Vía |
|---|---|---|---|
|
14:16
14:39
|
RI - OUIGO06822 |
||
|
14:34
|
RF - AVLO05124 |
||
|
14:57
|
RF - AVE05951 |
||
| Compartido: Avant 34951 Requena-Utiel - València Joaquín Sorolla | |||
|
15:24
|
IL - IRYO06132 |
||
|
16:34
|
RF - AVE05140 |
||
| Compartido: Avant 34140 Requena-Utiel - València Joaquín Sorolla | |||
|
17:09
|
IL - IRYO06142 |
||
|
17:29
|
RF - AVE05750 |
||
|
18:24
|
RF - AVE05160 |
||
|
18:44
|
IL - IRYO06162 |
||
|
19:24
|
RF - AVE05170 |
||
|
20:09
|
RI - OUIGO06582 |
||
|
20:34
|
RF - AVE05184 |
||
|
21:06
|
RF - AVE03981 |
||
|
21:24
|
IL - IRYO06192 |
||
|
21:40
|
RF - AVE05990 |
||
|
22:24
|
RF - AVE05200 |
||
|
22:39
|
IL - IRYO06202 |
||
|
23:05
|
RF - AVLO05210 |
||
|
23:15
|
RI - OUIGO06612 |
||
|
06:47
|
RF - AVE05069 |
4
|
|
|
09:09
|
RI - OUIGO06472 |
2
|
|
|
09:30
|
RF - AVE05070 |
4
|
|
|
09:39
|
IL - IRYO06072 |
5
|
|
|
10:24
|
RF - AVE05080 |
6
|
|
|
11:30
|
IL - IRYO06092 |
5
|
|
Informacion de la estación
-
Dirección
C/ San Vicente Mártir, 171 --- 46007 València --- VALENCIA / VALENCIA
-
Horario
Diario: 05:30 a 23:59
Intermodalidad
Parada
2284 Estació Joaquín Sorolla
Líneas
31 Estació Joaquín Sorolla / La Patacona
64 Benicalap / Hospital La Fe1 Bétera - Castellò
2 Llíria - Torrent Avinguda
7 Marítim - Torrent Avinguda
The following has evaluated to null or missing:
==> .vars["serviciosFieldSet"].idFieldSet.idFieldSetFieldSet.descripcionServicios.getSiblings()[idx] [in template "20101#20128#ADIF-SERVICIOS-ESTACION-TEMPLATE" at line 62, column 36]
----
Tip: It's the final [] step 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: #assign item = {"id": idNodo.getData(... [in template "20101#20128#ADIF-SERVICIOS-ESTACION-TEMPLATE" in macro "listPaint" at line 59, column 17]
- Reached through: @listPaint servicios.id.getSiblings()... [in template "20101#20128#ADIF-SERVICIOS-ESTACION-TEMPLATE" at line 39, column 5]
----
1<script type="text/javascript">
2
3
4function cierraDetalles(){
5 var detalles = $("div[id^='detalleServicio']");
6 var iconos = $("[id^='button-detalleServicio']");
7 for (let detalle of detalles) {
8 detalle.style.display = 'none'
9 }
10 for (let icono of iconos) {
11 icono.setAttribute('aria-expanded', 'false');
12 }
13}
14
15 function toggle(id, id2) {
16
17
18 var n = document.getElementById(id);
19if (n.style.display != 'none')
20 {
21 n.style.display = 'none';
22 document.getElementById(id2).setAttribute('aria-expanded', 'false');
23 }
24 else
25 {
26 cierraDetalles();
27 n.style.display = '';
28 document.getElementById(id2).setAttribute('aria-expanded', 'true');
29 }
30 }
31
32
33 </script>
34
35<#if servicios?? && servicios.id?? && servicios.id.getSiblings()?has_content>
36 <div class="title-servicios">
37 <h3><@liferay.language key="es.adif.estacion.servicios"/></h3>
38 </div>
39 <@listPaint servicios.id.getSiblings() ""/>
40</#if>
41
42<#if serviciosAdaptados?? && serviciosAdaptados.idAdaptados?? && serviciosAdaptados.idAdaptados.getSiblings()?has_content>
43 <div class="title-servicios">
44 <h3><@liferay.language key="es.adif.estacion.servicios-adaptados"/></h3>
45 </div>
46 <@listPaint serviciosAdaptados.idAdaptados.getSiblings() "Adaptados"/>
47</#if>
48
49<#macro listPaint listaIds texto>
50 <#-- 1. Creamos una lista limpia combinando los datos por su índice -->
51 <#assign listaTipada = [] />
52
53 <#list listaIds as idNodo>
54 <#assign idx = idNodo?index />
55
56 <#if texto != "Adaptados">
57 <#-- Acceso seguro navegando la estructura exacta del XML usando las variables de Liferay -->
58 <#if .vars["serviciosFieldSet"].idFieldSet.idFieldSetFieldSet.titulo.getSiblings()[idx]??>
59 <#assign item = {
60 "id": idNodo.getData(),
61 "titulo": .vars["serviciosFieldSet"].idFieldSet.idFieldSetFieldSet.titulo.getSiblings()[idx].getData(),
62 "descripcion": .vars["serviciosFieldSet"].idFieldSet.idFieldSetFieldSet.descripcionServicios.getSiblings()[idx].getData(),
63 "icono": .vars["serviciosFieldSet"].idFieldSet.idFieldSetFieldSet.icono.getSiblings()[idx].getData(),
64 "pop": .vars["serviciosFieldSet"].idFieldSet.idFieldSetFieldSet.popServicios.getSiblings()[idx].getData()
65 } />
66 <#assign listaTipada = listaTipada + [item] />
67 </#if>
68 <#else>
69 <#-- Ruta exacta para los servicios adaptados -->
70 <#if .vars["serviciosAdaptadosFieldSet"].idAdaptadosFieldSet.idAdaptadosFieldSetFieldSet.tituloAdaptados.getSiblings()[idx]??>
71 <#assign item = {
72 "id": idNodo.getData(),
73 "titulo": .vars["serviciosAdaptadosFieldSet"].idAdaptadosFieldSet.idAdaptadosFieldSetFieldSet.tituloAdaptados.getSiblings()[idx].getData(),
74 "descripcion": .vars["serviciosAdaptadosFieldSet"].idAdaptadosFieldSet.idAdaptadosFieldSetFieldSet.descripcionAdaptados.getSiblings()[idx].getData(),
75 "icono": .vars["serviciosAdaptadosFieldSet"].idAdaptadosFieldSet.idAdaptadosFieldSetFieldSet.iconoAdaptados.getSiblings()[idx].getData(),
76 "pop": .vars["serviciosAdaptadosFieldSet"].idAdaptadosFieldSet.idAdaptadosFieldSetFieldSet.popAdaptados.getSiblings()[idx].getData()
77 } />
78 <#assign listaTipada = listaTipada + [item] />
79 </#if>
80 </#if>
81 </#list>
82
83 <#-- 2. Ordenamos nativamente por el título de los mapas creados -->
84 <#if listaTipada?has_content>
85 <#assign listaOrdenada = listaTipada?sort_by("titulo") />
86
87 <#-- 3. Pintamos en filas de 3 usando la lista ya ordenada -->
88 <#list listaOrdenada as cur_item>
89 <#if cur_item?index % 3 == 0>
90 <#assign
91 hay1 = listaOrdenada[cur_item?index + 1]??
92 hay2 = listaOrdenada[cur_item?index + 2]??
93 />
94 <div class="servicios-estacion" id="servicios-estacion">
95 <@boxPaint cur_item cur_item?index texto/>
96 <#if hay1>
97 <@boxPaint listaOrdenada[cur_item?index + 1] cur_item?index + 1 texto/>
98 <#if hay2>
99 <@boxPaint listaOrdenada[cur_item?index + 2] cur_item?index + 2 texto/>
100 </#if>
101 </#if>
102 </div>
103 <@detailPaint cur_item cur_item?index texto/>
104 <#if hay1>
105 <@detailPaint listaOrdenada[cur_item?index + 1] cur_item?index + 1 texto/>
106 <#if hay2>
107 <@detailPaint listaOrdenada[cur_item?index + 2] cur_item?index + 2 texto/>
108 </#if>
109 </#if>
110 </#if>
111 </#list>
112 </#if>
113</#macro>
114
115<#macro boxPaint elem index texto>
116 <#if elem.pop ?? && elem.pop != "">
117 <button class="linkServiciosDesp" id="button-detalleServicio${texto}-${index}" aria-expanded="false" aria-controls="detalleServicio${texto}-${index}" onclick="toggle('detalleServicio${texto}-${index}', 'button-detalleServicio${texto}-${index}')">
118 </#if>
119 <div class="servicio-estacion" id="iconoServicio${texto}-${index}">
120 <div class="servicio-estacion-icono" style="background-image:url('${elem.icono}')"></div>
121 <div class="servicio-estacion-datos">
122 <h4>${elem.titulo}</h4>
123 <p class="descripcion-servicios">${elem.descripcion}</p>
124 <#if elem.pop ?? && elem.pop != "">
125 <p class="detalle-mas-informacion">
126 <span class="texto_servicios_responsive" data-desktoptext="Más información" data-phonetext="+"></span>
127 </p>
128 </#if>
129 </div>
130 </div>
131 <#if elem.pop ?? && elem.pop != "">
132 </button>
133 </#if>
134</#macro>
135
136<#macro detailPaint elem index texto>
137 <div role="region" aria-labelledby="button-detalleServicio${texto}-${index}" class="servicios-estacion" id="detalleServicio${texto}-${index}" style="display:none">
138 <div class="servicio-estacion servicio-estacion-detalle servicio-estacion-detalle-${index%3} ">
139 <div class="servicio-estacion-icono" style="background-image:url('${elem.icono}')"></div>
140 <div class="servicio-estacion-datos">
141 <h4>${elem.titulo}</h4>
142 ${elem.pop}
143 <p>
144 <button aria-label="<@liferay.language key="navigation.cerrar" /> ${elem.titulo}" class="btn-close-adif" type="button" onclick="toggle('detalleServicio${texto}-${index}', 'button-detalleServicio${texto}-${index}')">×</button>
145 </p>
146 </div>
147 </div>
148 </div>
149</#macro>
150
151
152
153<#function esMayor string1 string2>
154 <#assign strings = [string1,string2]?sort>
155 <#return strings[0]==string2>
156</#function>
La Casa de las Carcasas
www.lacasadelascarcasas.es/contenidos/tiendas-en-la-comunidad-valenciana
Número de local: Vestíbulo
Candy&go
Número de local: Vestíbulo
Como
Número de local: Vestíbulo
Máquinas vending Teika
Número de local: Vestíbulo
PARAFARMACIA
Número de local: Vestíbulo
Ok Mobility
Número de local: Vestíbulo
2theloo
Número de local: Vestíbulo
Cajeros automáticos
Número de local: Vestíbulo
Tecnotrón
Número de local: Vestíbulo

