如何在mysql数据库中显示struts2 jquery网格中的blob类型?

时间:2014-02-03 22:53:28

标签: jquery mysql struts2

我能够在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>

提前感谢您的帮助。

2 个答案:

答案 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/