通过本案例,我们实现blobImage上传的图片在报表中的显示。
存图片的字段里面的内容是二进制格式的,需要通过写java代码调用blobDownloadAction获得数据库中存储的图片的url,因此reportData不能使用KSQLAction,要使用Action。下面是java代码完整案例。
1.action中代码
import java.math.*; import java.sql.*; import java.util.*; import org.dom4j.*; import com.justep.system.data.*; import com.justep.system.action.ActionUtils; public class OPM { public static Table queryMessage(String concept,String idColumn,String select,String from,String condition,List range,String filter,Boolean distinct,Integer offset,Integer limit,String columns,String orderBy,String aggregate,String aggregateColumns,Map variables,String dataModel,String fnModel){ Table t = KSQL.select("select SA_OPPerson.* from SA_OPPerson SA_OPPerson", null, "/system/data", null); Iterator<Row> it = t.iterator(); while (it.hasNext()) { Row r = it.next(); try { String url = "/UI2/system/components/justep/blob/server/download.j" + "?process=/demo/components/process/org/orgProcess" //流程名称 + "&activity=mainActivity" //环节名称 + "&action=blobDownloadAction" //调用的Action + "&blobDataModel=/system/data" //数据模块目录 + "&blobConcept=SA_OPPerson" //概念名 + "&blobRelation=sPhoto" //关系名 + "&blobConceptValue=" + r.getValue("SA_OPPerson") //行ID +"&$query-version=" + com.justep.system.util.CommonUtils.createGUID(); //可新建一字段来接收url r.setString("sHomePlace", addBsessionid(url)); //将url存入table对象 } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } return t; } protected static String addBsessionid(String url) { String bessionid = ActionUtils.getRequestContext().getSessionContext().getSessionID(); if (url.contains("?")) { return url + "&bsessionid=" + bessionid; } else { return url + "?bsessionid=" + bessionid; } } }
2.reportData绑定action
3.报表设计
在报表设计器中,选中要显示图片的单元格,设置属性display-type为image
只要字段中的内容是一个图片的url,就可以显示出这个图片了。
评一波