分类: Java
2009-12-08 14:32:00
1. ZSS组件暴露一些JS接口,提供给外部嵌入系统调用。参考:
2. 外部系统调用ZSS组件JS接口时,ZSS组件执行外部系统的回调函数,并传递相关参数给外部系统回调函数,外部系统独立执行相关逻辑处理,并返回值给ZSS,ZSS根据返回的值,判断是否执行相关参数。
例如,外部系统调用ZSS保存操作
外部系统调用的方法:onclick="index.window.onBwSaveBook('beforeSaveBook', 1, 3);"
1) beforeSaveBook:告知ZSS要回调的函数,改JS函数存储在callbak.js文件中
2) 1:获取ZSS组件sheet的row,-1表示整行
3) 3:获取ZSS组件sheet的cell,-1表示整列
以上表示:在调用ZSS保存操作时,告知ZSS返回第1行,第3列的值给外部系统,并回调外部系统的beforeSaveBook函数,ZSS根据回调函数beforeSaveBook处理后返回的值,决定是否执行保存操作。
1. 系统界面
2. 点击保存(调用ZSS组件的saveBook函数->ZSS回调,执行beforeSaveBook->根据beforeSaveBook返回的值决定是否执行ZSS保存)
3. 真正执行保存
4. 保存成功
外部系统
.html
"button" value="保存文件" onclick="index.window.onBwSaveBook('beforeSaveBook', 1, 3);"/> |
callbak.js (同一存放回调函数,注意用javax.swing.JOptionPane.showMessageDialog代替alert)
functionbeforeSaveBook(cell){ |
println(cell); |
javax.swing.JOptionPane.showMessageDialog(null,cell,"message",javax.swing.JOptionPane.OK_OPTION); |
return"1"; |
} |
ZSS组件
index.zul
]]> |
import com.botwave.util.JSUtil; |
void onBwSaveBook() { |
var value = onBwSaveBook.value; |
var callbackIndex = value.indexOf("_CALLBACK:"); |
var paramIndex = value.indexOf("_PARAM:"); |
if(callbackIndex == -1 || paramIndex == -1) { |
alert("系统繁忙,请稍后!"); |
return; |
} // 获取参数 |
var param = value.substring(paramIndex, callbackIndex); // 获取回调函数 |
var callbackfunc = value.substring(callbackIndex); |
callbackfunc = callbackfunc.replace("_CALLBACK:",""); |
param = param.replace("_PARAM:",""); |
var params = param.split(","); |
// 获取sheet |
var sheet = ss1.getSelectedSheet(); // 获取具体行列值 |
var cellValue = sheet.getCell(Integer.parseInt(params[0])-1, Integer.parseInt(params[1])-1).getEditText(); |
var p = new String[2]; |
p[0] = cellValue; // 回调JS |
var returnValue = JSUtil.callJS(callbackfunc, p); |
if(returnValue.equals("1")) |
w1.onBwSaveBook(); |
else |
alert("no excute!"); |
} |
|