tag etiquetas ejemplos ejemplo directivas basico java jsp jsp-tags el

etiquetas - taglib java



¿Cómo puedo pasar un objeto a una etiqueta JSP? (6)

Tengo una página JSP que contiene un scriplet donde instancia un objeto. Me gustaría pasar ese objeto a la etiqueta JSP sin usar ningún caché.

Por ejemplo, me gustaría lograr esto:

<%@ taglib prefix="wf" uri="JspCustomTag" %> <% Object myObject = new Object(); %> <wf:my-tag obj=myObject />

Estoy tratando de evitar la interacción directa con cualquiera de los cachés (página, sesión, servletcontext), prefiero que mi etiqueta se encargue de eso.



Para mí, el lenguaje de expresión funciona solo si hago que esa variable sea accesible, poniéndolo, por ejemplo, en el contexto de la página.

<% Object myObject = new Object(); pageContext.setAttribute("myObject", myObject); %> <wf:my-tag obj="${myObject}" />

De lo contrario, tas recibe nulo.

Y <wf:my-tag obj="<%= myObject %>" /> funciona sin esfuerzo adicional. Además, <% =%> otorga validación de tipo jsp en tiempo de compilación, mientras que El se valida solo en tiempo de ejecución.


Puede usar "<% =%>" para obtener el valor del objeto directamente en su etiqueta:

<wf:my-tag obj="<%= myObject %>"/>

y para obtener el valor de cualquier variable dentro de ese objeto puedes obtenerlo usando "obj.parameter" como:

<wf:my-tag obj="<%= myObject.variableName %>"/>


Una pregunta ligeramente diferente que busqué aquí: "¿Cómo pasas un objeto a un archivo de etiqueta?"

Respuesta: use el atributo "tipo" de la directiva de atributos:

<%@ attribute name="field" required="true" type="com.mycompany.MyClass" %>

El tipo tiene como valor predeterminado java.lang.String , por lo que sin él obtendrá un error si intenta acceder a los campos del objeto diciendo que no puede encontrar el campo de tipo Cadena.


Use el lenguaje de expresión:

<wf:my-tag obj="${myObject}" />


<jsp:useBean id="myObject" class="java.lang.Object" scope="page" /> <wf:my-tag obj="${myObject}" />

No se recomienda usar Scriptlets en la página JSP. Mata el propósito de un lenguaje de plantilla.