java jsp constants jsp-tags

Constantes Java en JSP



constants jsp-tags (7)

Esta pregunta ya tiene una respuesta aquí:

Tengo una clase que define los nombres de varias constantes, por ejemplo

class Constants { public static final String ATTR_CURRENT_USER = "current.user"; }

Me gustaría usar estas constantes dentro de un JSP sin usar código Scriptlet como:

<%@ page import="com.example.Constants" %> <%= Constants.ATTR_CURRENT_USER %>

Parece que hay una etiqueta en el taglib no estándar Apache que proporciona esta funcionalidad. Sin embargo, no puedo encontrar ninguna forma de descargar este taglib. Estoy comenzando a preguntarme si ha quedado obsoleto y la funcionalidad se ha movido a otra biblioteca de etiquetas (Apache).

¿Alguien sabe dónde puedo obtener esta biblioteca, o si no está disponible, si hay alguna otra forma de que pueda acceder a las constantes en un JSP sin usar el código scriptlet?

Saludos, Don


¿Por qué quiere imprimir el valor de la constante en el JSP? Seguramente los está definiendo para que en el JSP pueda extraer objetos de la sesión y solicitarlos antes de presentarlos.

<%@ page import="com.example.Constants" %> <%@ page import="com.example.model.User" %> <% User user = (User) session.getAttribute(Constants.ATTR_CURRENT_USER); %> <h1>Welcome <%=user.getFirstName()%></h1>


¿Qué tipo de funcionalidad quieres usar? ¿Esa etiqueta debería poder acceder a cualquier campo de clase pública por nombre de clase y nombre de campo?

Los scriptlets que enlazan hechos en tiempo de compilación pero el acceso de campo de la clase taglib tiene que usar dicha API java como reflejo en el tiempo de ejecución. ¿En serio necesitas eso?


Al iniciar la aplicación, puede agregar la clase Constants al servletContext y luego acceder a ella en cualquier página jsp

servletContext.setAttribute("Constants", com.example.Constants);

y luego acceder a ella en una página jsp

<c:out value="${Constants.ATTR_CURRENT_USER}"/>

(puede que tenga que crear captadores para cada constante)



Usaré jakarta-taglibs-unstandard-20060829.jar en mi proyecto pero, ya lo creo, parece que ya no está disponible para su descarga .

Lo tengo en mi pom.xml para obtener esa biblioteca, pero creo que solo funcionará porque esa biblioteca está ahora en mi repositorio local (no puedo encontrarla en los repositorios oficiales):

<dependency> <groupId>jakarta</groupId> <artifactId>jakarta-taglibs-unstandard</artifactId> <version>20060829</version> </dependency>

No sé si hay otra alternativa.

Eso espero porque era una buena forma de acceder a las constantes en JSP.



Parece un duplicado de acceso a las constantes en JSP (sin scriptlet)

Mi respuesta fue:

Las propiedades estáticas no son accesibles en EL. La solución alternativa que uso es crear una variable no estática que se asigna al valor estático.

public final static String MANAGER_ROLE = ''manager''; public String manager_role = MANAGER_ROLE;

Yo uso lombok para generar getter y setter así que está bastante bien. Su EL se ve así:

${bean.manager_role}

Código completo en http://www.ninthavenue.com.au/java-static-constants-in-jsp-and-jsf-el