// 以下是热敏打印机的开发步骤(只适用于IE浏览器)
1.下载BTP-2002CPV2.22.zip和POSOCX-V1.23.zip
2.安装
POSOCX-V1.23.zip 是安装打印机
BTP-2002CPV2.22.zip 是注册
3.jsp页面:
3.1 引入js文件(xxx.js指自己的posocx的js文件)
<script type="text/javascript" src="<%=basePath%>/xxx.js" charset="utf-8"></script>
3.2 在页面的最大的div的最后引入posocx对象(注册表中搜索posocx,clsid是注册号)
<div>
<!-- 页面的内容 -->
<object id="POSOCX" classid="clsid:自己的注册码" width="0" height="0" align="center" hspace="0">
</object>
</div>
3.3 调用方法:(打印上下联)
var posObj = document.getElementById("POSOCX");
//调用自己js文件中的打印方法// 这是***.js中的方法
结合dwz实现打印小票,则稍微复杂一些。
情境描述:
form表单提交,后台操作成功后,dwz弹框操作成功,我们点击确定则退出。现在想要修改弹框信息(提示是否打印小票),并且弹框上有两个按钮,确定和取消。点击确定我们打印,取消不打印。
jsp页面:
<div class="pageContent">
<form method="post" action="test.action?flag=${flag }"
class="pageForm required-validate"
onsubmit="return validateCallback1(this, test1);">
<!-- 页面的内容 -->
</form>
<!-- 页面的内容 -->
<object id="POSOCX" classid="clsid:自己的注册码" width="0" height="0" align="center" hspace="0">
</object>
</div>
js开发过程如下:
我们常用场景:
如form标签中加上属性:
onsubmit="return validateCallback(this, dialogAjaxDone);"
表单提交处理后,会弹框显示操作成功。
分析dwz的源代码,发现dwz.ajax.js中的validateCallback方法有三个参数,
/**
* 普通ajax表单提交
* @param {Object} form
* @param {Object} callback
* @param {String} confirmMsg 提示确认信息
*/
function validateCallback(form, callback, confirmMsg) { // form 提交的表单对象,callback回调函数,confirmMsg是提示确认信息。
var $form = $(form);
if (!$form.valid()) {
return false;
}
var _submitFn = function(){
$.ajax({
type: form.method || 'POST',
url:$form.attr("action"),
data:$form.serializeArray(), // 此处是form表单的数据
dataType:"json",
cache: false,
success: callback || DWZ.ajaxDone, // 回调
error: DWZ.ajaxError
});
}
if (confirmMsg) {
alertMsg.confirm(confirmMsg, {okCall: _submitFn});
} else {
_submitFn();
}
return false;
}
我们想要实现自己的功能,肯定需要传递自己的callback方法。
控制器中我们:
resp.getWriter().write("{\"message\":\"操作成功!\",\"navTabId\":\"main\",\"callbackType\":\"closeCurrent\",\"statusCode\":\"200\"}");
查看dwz的dialogAjaxDone源码:
/**
* dialog上的表单提交回调函数
* 当前navTab页面有pagerForm就重新加载
* 服务器转回navTabId,可以重新载入指定的navTab. statusCode=DWZ.statusCode.ok表示操作成功, 自动关闭当前dialog
*
* form提交后返回json数据结构,json格式和navTabAjaxDone一致
*/
function dialogAjaxDone(json){
DWZ.ajaxDone(json);
if (json[DWZ.keys.statusCode] == DWZ.statusCode.ok){
if (json.navTabId){ // 重新加载页面
navTab.reload(json.forwardUrl, {navTabId: json.navTabId});
} else {
var $pagerForm = $("#pagerForm", navTab.getCurrentPanel());
var args = $pagerForm.size()>0 ? $pagerForm.serializeArray() : {}
navTabPageBreak(args, json.rel);
}
if ("closeCurrent" == json.callbackType) {
$.pdialog.closeCurrent();
}
// 我们可以在这里写自己的代码。此处我们需要form表单中的数据,但是jquery取不到。怎么办?
//我们想到了validateCallback方法,他帮我们提交数据,他里面绝对有form的数据。前面查看validateCallback方法源码已经知道。
}
}