function printList(){
//sessionId
var sessionId=$('#sessionId').val();
//查询条件
var jsonWhere=$('#jsonWhere').val();
//查询类型,设置为由分页引起的查询,使用pager.jsonWhere作为查询条件,而非Search
var sreachType=$('#sreachType').val();
//页数,设为-1,表示打印所有的页
var pageSize=-1;
//拼接所有的请求参数,需要进行编码转换(escape),因为jsonWhere里面包含一些特殊的字符,有些情况会导致数据丢失,如:"sendBanks":["10045437"]
var paramerter="?pager.jsonWhere="+escape(jsonWhere)+"&pager.sreachType="+escape(sreachType)+"&pager.pageSize="+escape(pageSize);
//Applet请求的url
var strUrl=$('#printAction').val()+paramerter;
var parentUrl=$('#pagerAction').val();
//向页面追加输出Applet程序,有更好的用户体验(不要使用document.write(),具体原因自己去查)
var appletStr='<applet code="com.ylink.cnaps2.countreport.base.PrinterApplet.class" codebase="../applet" archive="print.jar" width="0" height="0" >';
appletStr+='<PARAM NAME = "PRINT_URL" VALUE ='+strUrl+'>';
appletStr+='<PARAM NAME = "PARENT_URL" VALUE ='+parentUrl+'>';
appletStr+='</applet>';
document.body.innerHTML+=appletStr;
}
以上是javascript中调用Applet程序的js源码。
Applet源码以及Action源码我提供一个参考博客:http://blog.csdn.net/defonds/article/details/4440697
之前在网上找了好几篇关于JavaWeb项目 Applet+jasperreport浏览器(客户端)打印的技术文章,它们写的还不错,对我的帮助也很大,但是在实际的使用过程中,还是发现了一些具体实现的技术细节问题,这个主要是跟具体的项目有关,总体的技术思路还是正确的,下面我就我所在的项目在处理这个打印所遇到的问题做一个阐述,供大家参考。
一、项目说明
项目采用struts2+spring+hibernate(SSH,开发全部采用注解方式)框架,服务器填充报表所使用的框架是jasperreport5.0.0.jar+ireport(绘制报表的工具),浏览器端用Applet小程序+jasperreport-Applet-3.2.0.jar(浏览器需要安装JRE支持Applet运行)。
二、所遇到的问题
1.刚刚开始时,我所写的Applet程序一直是在eclipse下进行调试,请求url(使用的是Action请求),一直发现报错,错误大致就是Java I/O异常,也就是inputstream无效,在博客上发现有一个人跟我是遇到了同样的问题,他一直以为请求servlet和请求Action会导致response,request一样,以至于使用response.getoutputstream和response.getinputstream会有区别,再次纠正,这是一个误解!!!刚刚开始我也受他的影响被带入误区了,因为凡是采用了struts2框架的就不能这么做,只能请求servlet才有效,而且我当时还特意新建了一个Servlet项目,发现请求Servlet确实行得通,再次声明这个是误解!!!不管你采用什么框架技术 response 和request还是属于 Servlet-API里面的对象,这个是不会改变的。之所以会出现这个问题,在我的项目本身是因为,你在eclipse下调试Applet程序,所有的请求都被拦截器给拦截了,因为需要验证用户,导致url请求没有执行,所以你必须在浏览器中调试该Applet程序,这样才会有(session)。出现该问题博客地址是:http://www.iteye.com/problems/15444
2.传参数问题:你使用Action请求,用了ModelDriver(模型驱动传参)也还是可以用URL问号传递参数,这个也是和上面同样的道理,要坚信可以行的通!
3.关于如何打包Applet以及签名,可以提供一个博客来参考,这个博客写的很详尽,我也是参考的他的。http://blog.csdn.net/defonds/article/details/4440697
如若有疑问,加我QQ:416551477。技术支持。