JSP (Java Server Page) - Utilizar ongl en jsp.Struts 2

   
Vista:

Utilizar ongl en jsp.Struts 2

Publicado por raquel (1 intervención) el 04/12/2012 09:36:48
Estoy realizando una aplicación con Struts 2 donde uso ONGL.
Tengo un fichero java donde tengo los DatosCtes
public class DatosCtes {
public static class EstadoLote {
public static final String ESTADO_PENDIENTE = "P";
public static final String ESTADO_FABRICACION = "F";
public static final String ESTADO_FINALIZADO = "T";
}
...
}

Quisiera usar dichas constantes en mi jsp pero no soy capaz. Lo que quiero es
<s:if test='estado=="P"'>
<s:text name="label.estadoTarjeta.pendiente"></s:text>
</s:if>

Me gustaria utilizar el valor de los datos constantes ESTADO_PENDIENTE en ver de usar P.

Leyendo los tutoriales de Ongl dice
"Una de las características de los miembros estáticos es que no es necesario tener una instancia de la clase en la que existe el miembro para poder llamar a estos miembros, pero aquí estamos creando una nueva instancia de las clases para llamarlos. También es posible hacer estas llamadas sin una instancia de la clase. En este caso debemos usar una notación especial de OGNL.
En esta notación, debemos indicar el nombre completo de la clase que contiene al miembro estático, precedida por una arroba ("@"). También se debe indicar el miembro que se quiere llamar precedido por una arroba."


Según esto sería
<s:if test='estado==@es.proyecto.struts2.DatosCtes@EstadoLote'> pero soy incapaz de acceder al valor ESTADO_PENDIENTE

¿Pueden ayudarme?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Utilizar ongl en jsp.Struts 2

Publicado por raquel (1 intervención) el 08/03/2013 13:48:16
Me autorespondo por se alguna persona tiene el mismo problema.
En una clase de java es.proyecto.struts2.DatosCtes podemos tener constantes definidas directamente en la clase
ej. public static final String ACTIVO = "S";

O constantes definidas a su vez dentro de outra clase ej.
public static class EstadoLote {
public static final String ESTADO_PENDIENTE = "P";
public static final String ESTADO_FABRICACION = "F";
public static final String ESTADO_FINALIZADO = "T";
}


Para acceder desde una jsp a la primera constante java utilizando ONGL tenemos
<s:property value="@es.proyecto.struts2.DatosCtes@ACTIVO" />

Para acceder a una constante del segundo tipo debemos
<s:property value="@es.proyecto.struts2.DatosCtes$EstadoLote@ACTIVO" />


Explicación
Para acceder a una clase se debe indicar el nombre completo de la clase precedido por una arroba (@).
Para acceder a una constante debemos indicar el nombre de la constante precedido por una arroba (@).

Para acceder a una clase dentro de una clase, hay que tener en cuenta que la clase EstadoLote se convierte en clase interna de DatosCtes. Debido a esto el nombre de la clase (fully quealified class ) de una clase interna es el nombre de la primera clase seguido del signo dólar ($) seguido del nombre de la clase interna. Por lo que el nombre de la clase Estado Lote es es.proyecto.struts2.DatosCtes$EstadoLote

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Utilizar ongl en jsp.Struts 2

Publicado por xve (8 intervenciones) el 08/03/2013 17:15:56
Muchas gracias por comentarlo Raquel...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar