it-swarm-es.tech

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

Tengo una página JSP que contiene un scriplet en el que instancia un objeto. Me gustaría pasar ese objeto a la etiqueta JSP sin usar 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 interactuar directamente con cualquiera de los cachés (página, sesión, servletcontext), prefiero que mi etiqueta maneje eso.

25
Joe Bienkowski

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

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

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

El tipo predeterminado en 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 del tipo String.

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

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

11
Adeel Ansari

La sintaxis original era reutilizar '<% =%>'

Entonces

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

Consulte esta parte del Tutorial de la biblioteca de etiquetas Sun para ver un ejemplo

5
Garth Gilmour

Para mí, el lenguaje de expresión solo funciona si hago accesible esa variable, poniéndola, 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. También <% =%> proporciona la validación de tipo en tiempo de compilación jsp, mientras que El se valida solo en tiempo de ejecución.

3
Pavel Feldman

Puede utilizar "<% =%>" 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, puede obtenerlo usando "obj.parameter" como:

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

Usar lenguaje de expresión:

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