¿Cómo puedo obtener automáticamente la ruta del archivo de una imagen usando <c:import url=""/> como src de <img src="" alt""/> Para ser más específicos, a continuación se muestra el requisito:
Cree una tarjeta con la siguiente estructura <c:ImportUrl url = “…”/> aquí la propiedad url funcionará así: url = “/img/avatar.png” el atributo url puede apuntar a la dirección de cualquier recurso. si el contexto actual (la ruta actual es /list), automáticamente c:ImportUrl devolverá el texto que contiene el comando para convertir del contexto actual al recurso señalado por la url.
Por ejemplo: tenemos el contexto: construya la página / lista de acuerdo con el patrón MVC cuando cada solicitud pasa por el controlador, en lugar de una solicitud directa a la vista (generalmente escrita en jsp). Si la dirección del archivo jsp es: /view/test/list.jsp La dirección de un archivo de imagen para incluir en la vista es: /img/avatar.png Para mostrar este archivo de imagen <img src = “<c:ImportUrl url="/img/avatar.png”/>”
Puede asignar el valor de la URL generada a una variable y luego usar esa variable:
<c:import var="image" url="/img/avatar.png"/> <img src = "${image}" alt="..." />El uso de una URL de datos y la codificación Base 64 funciona, pero es posible que deba forzar una codificación de caracteres específica/conjunto de caracteres de tipo de contenido.
Aquí hay un extracto de JSP que usa el scriptlet JSP para hacer la codificación Base64:
<c:import url="https://my.server.com/get-png-data" var="imageData"/> <% String base64data = java.util.Base64.getEncoder().encodeToString( ((String) pageContext.getAttribute("imageData")).getBytes()); %> <img src="data:image/png;base64,<%=base64Data%>"/> En un par de sistemas, tuve que usar explícitamente ...getBytes("ISO-8859-1") .
También recomendaría, por cierto, envolver ese <c:import> en un <c:catch> en caso de que haya fallas. Como esto:
<c:catch var="importException"> <c:import url="https://my.server.com/get-png-data" var="imageData"/> ... </c:catch> <c:if test="${not empty importException}"> <c:out value="${importException}"/> <%-- do something else here to handle --%> </c:if>