Foros del Web » Programación para mayores de 30 ;) » Java »

Struts 2 y JSTL EL

Estas en el tema de Struts 2 y JSTL EL en el foro de Java en Foros del Web. Buenas a todos, tengo una duda y no sé si se podrá hacer por lo que he estado leyendo. Desde un action en Struts2 añado ...
  #1 (permalink)  
Antiguo 26/01/2011, 09:08
rakilinda
Invitado
 
Mensajes: n/a
Puntos:
Struts 2 y JSTL EL

Buenas a todos,

tengo una duda y no sé si se podrá hacer por lo que he estado leyendo.

Desde un action en Struts2 añado un atributo "accion" a la request que después quiero recuperar en el jsp.

De esta manera funciona:

<s:form action='%{#request.accion}'>
<s:hidden name="prueba"/>
</s:form>

Pero de esta otra no:

<s:form action='%{$accion}'>
<s:hidden name="prueba"/>
</s:form>

Si alguien puede confirmarlo.

Muchas gracias.
  #2 (permalink)  
Antiguo 26/01/2011, 09:56
 
Fecha de Ingreso: enero-2008
Mensajes: 614
Antigüedad: 14 años, 7 meses
Puntos: 57
Respuesta: Struts 2 y JSTL EL

En realidad no se cual pudiera ser tu problema, pero la diferencia entre ambas expresiones es que utilizando #, el resultado de la expresion se transfiere a otras fases en el ciclo de vida de la pagina. En cambio utilizando $ el valor se calcula inmediatamente y no se pasa a otras fases.

Revisa el tutorial de Java EE 6:
Immediate and Deferred evaluation syntax
http://download.oracle.com/javaee/6/...doc/bnahr.html
  #3 (permalink)  
Antiguo 26/01/2011, 15:36
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 13 años, 3 meses
Puntos: 306
Respuesta: Struts 2 y JSTL EL

Los símbolos %{..} indican a Struts que lo que va dentro debe ser interpretado como una expresión OGNL.

#request.accion es una expresión OGNL de Struts2 que apunta al objeto accion guardado en la request.

Sin embargo

$accion

es una cuais-expresión EL de JSTL, por lo que seguramente Struts no la interpreta bien. No es muy recomendable mezclar etiquetas de lenguajes distintos.

De todas formas, para usar un atributo de la request con EL puede que te funcione

<s:form action='<%=${requestScope.accion}%>'>
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #4 (permalink)  
Antiguo 27/01/2011, 06:01
rakilinda
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Struts 2 y JSTL EL

Buenas,

Por lo que decís me parece que Struts2 no interpreta bien expresiones EL. De la forma que me ha comentado Xerelo:
<s:form action='<%=${requestScope.accion}%>'>
se queja de que el TLD o la directiva attribute del archivo tag, el atributo action no acepta expresiones.

Así que tendré que utilizar en los jsp expresiones EL y Ognl en vez de un único tipo.

Muchas gracias por contestar.
  #5 (permalink)  
Antiguo 27/01/2011, 15:18
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 13 años, 3 meses
Puntos: 306
Respuesta: Struts 2 y JSTL EL

Cita:
Así que tendré que utilizar en los jsp expresiones EL y Ognl en vez de un único tipo.
No me has entendido

Cita:
Iniciado por Yo
No es muy recomendable mezclar etiquetas de lenguajes distintos.
No sé por qué te empeñas en usar EL mezclado con OGNL, cunando parece que con OGNL te llega.

Cita:
<s:form action='%{#request.accion}'>
OGNL+OGNL = Funciona

Cita:
<s:form action='<%=${requestScope.accion}%>'>
OGNL+EL = No funciona
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #6 (permalink)  
Antiguo 28/01/2011, 04:00
rakilinda
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Struts 2 y JSTL EL

Buenas,

me parece que no me he explicado bien. Estaba intentando utilizar solo EL en el jsp pero para ese caso particular solo funciona si utilizo OGNL. Por eso decía lo de mezclar.

Saludos.

Etiquetas: jstl, struts
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:42.