通过本案例,我们实现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,就可以显示出这个图片了。


评一波