起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2434|回复: 1

V3.6-Excel导入时传参以及校验

  [复制链接]

2

主题

3

帖子

21

积分

新手上路

Rank: 1

积分
21
QQ
发表于 2017-2-21 09:52:38 | 显示全部楼层 |阅读模式
本帖最后由 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事件添加传参
  1. Model.prototype.importExcelBeforeImport= function(event) {

  2.                 var mainData = this.comp("mainData");
  3.                 var headCheck = {};
  4.                 headCheck.fOrderNum = mainData.getValue("fOrderNum");
  5.                 headCheck.fBranchCode = mainData.getValue("fBranchCode");
  6.                 headCheck.fMonthNum = mainData.getValue("fMonthNum");

  7.                 // 给后台传校验数据
  8.                 var options = {};
  9.                 var param = new biz.Request.ActionParam();
  10.                 param.setString('headCheckJson', JSON.stringify(headCheck));
  11.                
  12.                 var process = "/xxsjWnb/WJB/process/WJB/wJBProcess";
  13.                 var activity = "mainActivity";
  14.                 options.contentType = 'application/json';
  15.                 options.process = process;
  16.                 options.activity = activity;
  17.                 options.dataType = "json";
  18.                 options.parameters = param;
  19.                 options.action = "ImportExcelParamAction";
  20.                 options.callback = function(data) {
  21.                         if (data.state) {
  22.                                 // 成功
  23.                         } else {
  24.                                 // 失败
  25.                                 biz.Request.errorMessage(data.response.message, "给后台传递校验数据失败!", null, null);
  26.                         }
  27.                 };
  28.                 var result = biz.Request.sendBizRequest(options);
  29.                
  30.                 this.comp("importExcel").importExcel();

  31.         };
复制代码

添加自定义Action:
  1. public static void ImportExcelParam(String headCheckJson) {
  2.                 JSONObject headCheck = JSONObject.parseObject(headCheckJson);
  3.                 if (headCheck == null || headCheck.isEmpty()) {
  4.                         return;
  5.                 }

  6.                 ContextHelper.getSessionContext().getSession().setAttribute("headCheck", headCheck);
  7.                 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传参:
  1. Model.prototype.importExcel1ImportCreateParam = function(event) {   
  2.    //直接给默认的action:uploadImportExcel传参
  3.    event.param['test'] = "传参测试"  
  4. };
复制代码


在自己的process文件中引用/SA/excel/logic/action和/SA/excel/logic/code
然后添加动作uploadImportExcel
给uploadImportExcel加执行前事件获取参数test的:
  1. public static void importProcessBeforeUploadImportExcel() {
  2.    test = ModelUtils.getRequestContext().getActionContext().getParameter("test");
复制代码

53

主题

313

帖子

1134

积分

金牌会员

Rank: 6Rank: 6

积分
1134
QQ
发表于 2017-4-12 12:42:26 | 显示全部楼层
学习学习学习
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-3-28 21:27 , Processed in 0.063170 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表