若依框架实现 导入excel时校验必填字段

萨瓦迪卡2年前 (2025-01-13)java技术1650
  1. 1.Excel类自定义注解添加必填校验

  2. /**
     * 判断是否必填项
     */
    public boolean required() default false;

    2.在实体类的字段添加检验

@Excel(name = "姓名",required = true)
private String personName;

3.在ExcelUtil类的importExcel方法里,获取是否必填属性并进行校验

 if (StringUtils.isNotNull(fieldType))
    {
        String propertyName = field.getName();

        if (StringUtils.isNotEmpty(attr.targetAttr()))
        {
            propertyName = field.getName() + "." + attr.targetAttr();
        }
        //获取是否有必填属性
        boolean required = attr.required();
        if(required) {
            if(StringUtils.isNull(val) || StringUtils.isEmpty(val.toString())) {
                throw new Exception(attr.name()+" 单元格未填写,请正确填写!");
            }
        }

        if (StringUtils.isNotEmpty(attr.readConverterExp()))
        {
            val = reverseByExp(Convert.toStr(val), attr.readConverterExp(), attr.separator());
        }
        else if (StringUtils.isNotEmpty(attr.dictType()))
        {
            val = reverseDictByExp(Convert.toStr(val), attr.dictType(), attr.separator());
        }
        else if (!attr.handler().equals(ExcelHandlerAdapter.class))
        {
            val = dataFormatHandlerAdapter(val, attr, null);
        }
        else if (ColumnType.IMAGE == attr.cellType() && StringUtils.isNotEmpty(pictures))
        {
            PictureData image = pictures.get(row.getRowNum() + "_" + entry.getKey());
            if (image == null)
            {
                val = "";
            }
            else
            {
                byte[] data = image.getData();
                val = FileUtils.writeImportBytes(data);
            }
        }
        ReflectUtils.invokeSetter(entity, propertyName, val);
    }
}

4.页面效果

image.png

本文原创,转载必追究版权。

分享给朋友:

相关文章

plsql 中number类型字段 取消科学计数法显示

 PL/SQL DEVELOPER中禁用科学计数法:Tools - Prefrence - SQL Window - 选择:"Number fields to_char&quo...

使用Myeclipse 8.5开发基于JAX-WS的Web service实例

 本文为Web service 开发入门篇,主要介绍在Myeclipse 8.5环境下开发Web service的服务程序和客户端程序的基本流程。 在Weblogic 11g...

get方式调用http接口   Header赋参数值

get方式调用http接口 Header赋参数值

   /**      195.     * 发送...

jquery 操作html元素(及CSS)

jquery 操作html元素(及CSS)

 $("li").addClass("aui-user-view-cell aui-img") ;  //给元素添加样式$('#a1...

开机密码忘记怎么办

1、重新启动计算机,在启动画面出现后马上按下F8键(不同类型型号电脑启动键不一样,参考附加),选择“带命令行的安全模式”。2、运行过程结束时,系统列出了系统超级用户“administrator”和本地...

竟然可以这样打扮!女人呆了!男人痴了!

来个轻松点的哇,惊呆了,肯定贵不了,立刻去瞅瞅...

评论列表

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。