我能够在MySQL中将图像保存为blob类型,现在我想使用struts2 jquery网格小部件显示它。我使用了edittype =“image”但它没有用。它只显示一些字符串。关于我应该使用哪种编辑类型的任何建议?
这是我的jquery网格:
<sjg:grid
id="testresulttable1"
caption="Test Result Summary"
dataType="json"
href="%{testtrsurl}"
pager="true"
gridModel="gridTRSModel"
rowList="10,15,20"
rowNum="15"
viewrecords="true"
viewsortcols="[true, 'horizontal', true]"
resizable="true"
multiselect="false"
loadonce="false"
>
<sjg:gridColumn
name="screenshot"
index="screenshot"
title="screenshot"
sortable="true"
edittype="image"
/>
</sjg:grid>
提前感谢您的帮助。
答案 0 :(得分:1)
实际上你不能直接在网格中显示blob-type,你能做的就是一些解决方法。将image-id作为网格中的隐藏字段,使用格式化程序调用一个函数,该函数将读取image-id并通过ajax调用获取blob数据。
然后,您可以通过将<img>
属性设置为ajax调用收到的binaryData,将其分配给某些<iframe>
中的src
。一旦实现,请告诉我。
我已经实现了类似的逻辑来显示从mysql数据库中读取的xml文件blob。
注意:不要直接使用blob,在将其分配给outputstream / inputstream之前将其转换为byte-array:)
答案 1 :(得分:1)
我接受了Quaternion和Darkhorse提供的答案并实施了它们(感谢您的意见)。我也得到了另一个博客的帮助。
以下是解决方案: 一个。而不是blob,我使用varchar并只存储图像的文件路径 湾在我的网格中,我使用了指向javascript的格式化程序 C。 javascript正在调用一个动作,该动作返回一个自定义结果类型,该结果类型又传递给通过formatter属性调用javascript的网格。
这是javascript:
function formatImage(cellvalue, options, row) {
if(!cellvalue){
return "n/a";
}else{
var action = "http://localhost:8181/MySel20Proj-1.0/imageAction.action?imageId=" + cellvalue;
return "<a href="+"'"+action+"'"+"title='' class='thickbox'><img src='" + action + "' width='30' height='30 align='middle' border='0'/></a>";
}
}
对于struts action / config,请参考以下网站: http://www.mkyong.com/struts2/struts-2-dynamic-image-example/