¿Cómo puedo dar expresiones EL como parámetros de las etiquetas anidadas JSP 2.0?

StackOverflow https://stackoverflow.com/questions/533938

  •  22-08-2019
  •  | 
  •  

Pregunta

quiero hacer algo como esto para llamar a una etiqueta JSP 2.0:

<mytags:foo abc="<%=def%>">
  <mytags:bar ghi="<%=jkl%>"/>
</mytags:foo>

Cuando Cuerdas def y jkl se definen earielr en el archivo JSP. Supongamos que mis archivos de etiquetas se ven así:

foo.tag:

<%@ tag body-content="scriptless" %>
<%@ attribute name="abc" required="true" %>
<div class="${abc}">
  <jsp:doBody/>
</div>

bar.tag:

<%@ tag body-content="scriptless" %>
<%@ attribute name="ghi" required="true" %>
<div>${ghi}</div>

Quiero la salida a este aspecto:

<div class="def">
<div>jkl</div>
</div>

(suponiendo que el def las variables y jkl se inicializa a def y jkl, respectivamente, en el archivo JSP que llama.)

La etiqueta externa obtiene su atributo muy bien (<div class="def">), pero la interior falla.

¿Es esto posible? Estoy recibiendo errores que jkl no se puede resolver.

¿Fue útil?

Solución

Tenga en cuenta el atributo body-content="scriptless" en la directiva de la etiqueta. Esto significa que el cuerpo rodeado de la etiqueta no puede contener código scriptlet (las cosas <% %>). Es necesario utilizar EL.

A mí me funciona si cambio de las cosas en el JSP para:

  <c:set var="def" value="def"></c:set>
  <c:set var="jkl" value="jkl"></c:set>

  <mytags:foo abc="${def}">
      <mytags:bar ghi="${jkl}"/>
  </mytags:foo>

Tenga en cuenta que tengo que añadir <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top