本帖最后由 bill0 于 2017-2-21 17:44 编辑
因为X5的excel资料太乱,故记录在此!
Excel导入时校验数据:http://bbs.wex5.com/forum.php?mod=viewthread&tid=37297问题:- 新建的Action里Workbook会出现类型转换错误 [Workbook workBook = (Workbook) ModelUtils.getRequestContext().getActionContext().getParameter("excel");]
- 解决办法:将excel要使用到的jar包复制到(BeX5_V3.6\runtime\BusinessServer\WEB-INF\lib)
Excel上传时传参:
方法一(推荐):
在ImportExcel的onBeforeImport事件添加传参
- Model.prototype.importExcelBeforeImport= function(event) {
- var mainData = this.comp("mainData");
- var headCheck = {};
- headCheck.fOrderNum = mainData.getValue("fOrderNum");
- headCheck.fBranchCode = mainData.getValue("fBranchCode");
- headCheck.fMonthNum = mainData.getValue("fMonthNum");
- // 给后台传校验数据
- var options = {};
- var param = new biz.Request.ActionParam();
- param.setString('headCheckJson', JSON.stringify(headCheck));
-
- var process = "/xxsjWnb/WJB/process/WJB/wJBProcess";
- var activity = "mainActivity";
- options.contentType = 'application/json';
- options.process = process;
- options.activity = activity;
- options.dataType = "json";
- options.parameters = param;
- options.action = "ImportExcelParamAction";
- options.callback = function(data) {
- if (data.state) {
- // 成功
- } else {
- // 失败
- biz.Request.errorMessage(data.response.message, "给后台传递校验数据失败!", null, null);
- }
- };
- var result = biz.Request.sendBizRequest(options);
-
- this.comp("importExcel").importExcel();
- };
复制代码
添加自定义Action:- public static void ImportExcelParam(String headCheckJson) {
- JSONObject headCheck = JSONObject.parseObject(headCheckJson);
- if (headCheck == null || headCheck.isEmpty()) {
- return;
- }
- ContextHelper.getSessionContext().getSession().setAttribute("headCheck", headCheck);
- return;
复制代码
方法二(不推荐):
http://docs.wex5.com/bex5-ui-question-list-10121/
- 后端uploadImportExcelAction新建的参数执行时为空,是因为importExcel组件的onImportCreateParam事件没有调用
- 解决办法修改(BeX5_V3.6\model\UI2\system\components\justep\excel\designer\import.xml)中的onImportCreateParam改成onCreateImportParam,重启IDE
在excel导入时,有时需要把页面中的值传过去,在V3.5版本以及后续版本中importExcel组件提供了onCreateImportParam(设计器里事件找不到onCreateImportParam,解决办法见上),可以给action传参 这个action默认的就是uploadImportExcel,可以自己在这个action上加参数然后在事件中给参数赋值,在这个action的执行前事件中就可以获取到
这个action的定义在/BIZ/SA/excel/logic/action/excel.action.m中 如下默认给这个action加一个参数test 在onCreateImportParam事件中给test传参: - Model.prototype.importExcel1ImportCreateParam = function(event) {
- //直接给默认的action:uploadImportExcel传参
- event.param['test'] = "传参测试"
- };
复制代码
在自己的process文件中引用/SA/excel/logic/action和/SA/excel/logic/code
然后添加动作uploadImportExcel
给uploadImportExcel加执行前事件获取参数test的:- public static void importProcessBeforeUploadImportExcel() {
- test = ModelUtils.getRequestContext().getActionContext().getParameter("test");
复制代码
|