在调用API计算并展现报表的过程中润乾报表提供了一些由系统产生或由系统处理的关键字,如根据reportParamsId可以取得储存于缓存中的参数等。
l appletJarName
在润乾报表应用的根目录下(默认),都会有一个raqsoftReportApplet.jar的java包,它是打印时所用到的Applet,一般情况下点击打印按钮时,Applet能指示已经启动,而打印对话框实际没有出来时,可能就是由于raqsoftReportApplet.jar与润乾报表的核心类不匹配引起。这个jar包默认情况下位于整个应用的根目录下,目前也可以通过tag标签的appletJarName属性来设置,如appletJarName=”*.jar”或者appletJarName=”dir/.../*.jar”。
通过tag标签设置appletJarName,报表在网页展现以后查看源码,在生成的打印javascript函数里可以看到appletJarName的值。函数代码如下:
<script language=javascript>
function report1_print() {
document.report1_printIFrame.location = " "<%=request.getContextPath()%>/reportServlet?action=2&name=report1&reportFileName=/switchCase.rpx&srcType=file&savePrintSetup=no&appletJarName=raqsoftReportApplet.jar&serverPagedPrint=no&mirror=no&reportParamsId=100002&cachedId=A_2&t_i_m_e=1374809461149";
}
</script>
在这个javascript函数里,可以看到reportFileName、srcType、appletJarName等关键字,除此以外,还有name、canModefyBeforPrint、cachedId、t_i_m_e等关键字,分别表示报表在网页中的ID标识、打印前是否能修改数据、报表缓存ID、报表运算的时间。
l reportParamsId-参数缓存对象标识ID号
用途说明:在报表运算过程中,报表系统会自动对参数缓存起来,并产生一个能标识缓存对象的标识ID,即reportParamsId。我们可以在request对象中取得本ID,并可以根据本ID取得缓存在参数池中的参数对象。润乾报表的reportParamsId缓存机制过程如下:
String reportParamsId = null;//定义reportParamsId
Hashtable hash = new Hashtable();
Enumeration em = request.getParameterNames();//获取传过来的所有参数
while ( em.hasMoreElements() ) {
//把除报表名外的所有参数及其值在Hashtable中保存
String name = ( String ) em.nextElement();
if( name.equals( "report" ) ) continue;
String value = request.getParameter( name );
hash.put( name, value );
}
if( hash.size() > 0 ) {
//生成一个ID,并把这个ID与刚才准备的hash形成键值关系
reportParamsId = ParamsPool.createParamsId();
ParamsPool.put( reportParamsId, hash );
}
用法说明:由上reportParamsId缓存机制可以看出,本标识与缓存各参数的HashTable的对象是一一对应的关系。所以使用本标识ID大概过程或思路如下:
//首先取得reportParamsId
String reportParamsId=request.getParameter("reportParamsId");
Hashtable params = null;
if(!"".equals(reportParamsId) && reportParamsId != null){
params = com.raqsoft.report.view.ParamsPool.get( reportParamsId );
}
//取得了我们上一步存入的hash
//比如,最简单的情况,我们假设原来有一个参数user = nortan
String user = (String) params.get("user");
System.out.println( user ); //这里打印出来应该是nortan
l srcType
用tag标签发布报表时,系统可以识别的srcType一共有reportBean, defineBean, file三种。