【发布时间】:2015-08-06 06:12:08
【问题描述】:
我有一个复杂的 Java 对象列表,其中包含一个字节数组作为从 DB 中检索的图像格式。 POJO中有文件名、文件类型和字节数组格式的文件数据等。字节数组的长度约为 20k。我可以通过 javascript 在 JSP 中将其显示为:
for(var i in data){
var imgelement = document.createElement("IMG");
imgelement.id=data[i].fileId;
imgelement.src = "data:"+data[i].fileType+";base64,"+data[i].thumbnail;
}
这将正确显示 IMG。
但是当我尝试通过使用 jstl foreach 函数迭代我的 POJO 列表将它放入我的普通 JSP 中时,我从来没有得到我的图像显示。
<c:forEach items="${searchResult}" var="current" varStatus="i">
<c:choose>
<c:when test="${(i.count) % 2 == 0}">
<c:set var="rowclass" value="rowtwo" />
</c:when>
<c:otherwise>
<c:set var="rowclass" value="rowone" />
</c:otherwise>
</c:choose>
<tr class="${rowclass}">
<td nowrap="nowrap" class="tabletd"> <img src="data:${current.miniFile.fileTyle};base64,<c:out value='${current.miniFile.thumbnail}'/>"/> </td>
<td nowrap="nowrap" class="tabletd"> ${current.site.siteName} </td>
<td nowrap="nowrap" class="tabletd"> ${current.distance} </td>
<td nowrap="nowrap" class="tabletd"> ${current.site.siteAccessby} </td>
<td nowrap="nowrap" class="tabletd"> ${current.site.siteAddressFormated} </td>
</tr>
</c:forEach>
在我的html页面中有输出显示,src为字节数组:
<img src="data:image/jpeg;base64,[B@2e29c573">
有什么想法吗?请指教!
编辑
我正在尝试通过 jsp:useBean 使用 Java 8 Java.util.Base64 的函数来进行字节数组转换,但它仍然不适合我。
其他问题,我如何使用 jsp:useBean 来做到这一点?因为变量是jstl变量。即我需要使用 jsp:usedBean 函数来处理 jstl 局部变量。
代码如下:
<tr class="${rowclass}">
<jsp:useBean id="obj" class="java.util.Base64"/>
<jsp:setProperty name="imageStr" property="String" value="${current.miniFile.thumbnail}"/>
<td nowrap="nowrap" class="tabletd"> <img src="data:${current.miniFile.fileTyle};base64,<c:out value='${current.miniFile.thumbnail}'/>"/> </td>
我没有使用jsp:useBean处理jstl变量的经验,有经验的请分享给我!赞赏!
再次编辑
有一个使用jsp:useBean做Date类型收费的例子
【问题讨论】:
-
你可以参考这个SO Answer。
-
我试过了,没有一个真的有效。我不知道为什么。