在struts2下不刷新上传excel文件,并回调页面方法!

方式与在struts1下面一样,用一个隐藏的iframe页面来负责提交文件,提交的路径和action都由struts2提供,如下:

<form action="importExcel" method="post" enctype="multipart/form-data" target="hidden_frame">

action类需要继承某一些接口,以能够调用request和response

public class OrderDetailAction extends ActionSupport  implements SessionAware, ServletResponseAware

action中的方法则如下:

File tempPathFile;
  // 默认路径
  String uploadTo = "D:\\";
  // 支持的文件类型
  String[] errorType = { ".xls" };
  // 格式化日期
  SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSSS");
 public String uploadUsersExcel() throws Exception
 {
  User user = new User();
  ActionContext ct= ActionContext.getContext();
     HttpServletRequest request1=
  (HttpServletRequest)ct.get(ServletActionContext. HTTP_REQUEST );

    System.out.println(importExcel.getName());
     try {
         FileInputStream is = new FileInputStream(importExcel);
         HSSFWorkbook wbs = new HSSFWorkbook(is);
         HSSFSheet childSheet = wbs.getSheetAt(0);
         // System.out.println(childSheet.getPhysicalNumberOfRows());
         System.out.println("有行数" + (childSheet.getLastRowNum()+1));
  
        
         for (int j = 1; j < childSheet.getLastRowNum()+1; j++) {
          HSSFRow row = childSheet.getRow(j);
           System.out.println(row.getPhysicalNumberOfCells());
           System.out.println("有列数" + row.getLastCellNum());
          if (null != row) {
         
            HSSFCell cell = row.getCell((short) 0);
            if (null != cell) {
             switch (cell.getCellType()) {

             case HSSFCell.CELL_TYPE_STRING: // 字符串
              user.setName(cell.getStringCellValue());
              user.setUserName(cell.getStringCellValue());
              break;
             case HSSFCell.CELL_TYPE_BLANK: // 空值
              System.out.println("为空");
              break;
             case HSSFCell.CELL_TYPE_ERROR: // 故障
              System.out.println(" ");
              break;
             default:
              System.out.print("未知类型   ");
              break;
             }
            } else {
             System.out.print("-   ");
            }
           
            cell = row.getCell((short) 1);
            if (null != cell) {
             switch (cell.getCellType()) {

             case HSSFCell.CELL_TYPE_STRING: // 字符串
              user.setTitle(cell.getStringCellValue());
              break;
             case HSSFCell.CELL_TYPE_BLANK: // 空值
              System.out.println("为空");
              break;
             case HSSFCell.CELL_TYPE_ERROR: // 故障
              System.out.println(" ");
              break;
             default:
              System.out.print("未知类型   ");
              break;
             }
            } else {
             System.out.print("-   ");
            }
           
            cell = row.getCell((short) 2);
            if (null != cell) {
             switch (cell.getCellType()) {

             case HSSFCell.CELL_TYPE_STRING: // 字符串
              user.setPhone(cell.getStringCellValue());
              break;
             case HSSFCell.CELL_TYPE_BLANK: // 空值
              System.out.println("为空");
              break;
             case HSSFCell.CELL_TYPE_ERROR: // 故障
              System.out.println(" ");
              break;
             default:
              System.out.print("未知类型   ");
              break;
             }
            } else {
             System.out.print("-   ");
            }
           
            cell = row.getCell((short) 3);
            if (null != cell) {
             switch (cell.getCellType()) {

             case HSSFCell.CELL_TYPE_STRING: // 字符串
              user.setEmail(cell.getStringCellValue());
              break;
             case HSSFCell.CELL_TYPE_BLANK: // 空值
              System.out.println("为空");
              break;
             case HSSFCell.CELL_TYPE_ERROR: // 故障
              System.out.println(" ");
              break;
             default:
              System.out.print("未知类型   ");
              break;
             }
            } else {
             System.out.print("-   ");
            }
           
           }
          user.setOrderId(orderIdForExcel);
         
          orderDetailService.addNewUser(user);
          }
          System.out.println();
        
        
         //这个地方尤为重要,调用页面上的回调函数
         String processParentFunctionStr="parent.backCallUpload()";
         PrintWriter writer=response.getWriter();
         response.setContentType("text/html");
         response.setCharacterEncoding("utf-8");
         writer.write("<script>"+processParentFunctionStr+"</script>");
        } catch (Exception e) {
         String processParentFunctionStr="parent.backCallUploadAlert()";
          PrintWriter writer=response.getWriter();
          response.setContentType("text/html");
          response.setCharacterEncoding("utf-8");
          writer.write("<script>"+processParentFunctionStr+"</script>");
         e.printStackTrace();
        }
  return null;
 }

这个方法负责的是接收上传上来的excel文件,并读出其中的内容,调用数据库方法以存储。由于代码未优化,故显得比较冗余而且乱。

这里的回调方法相对简单一些,仅仅是关闭div和翻到最后一页而已。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值