因为inputFileUpload这个组件本身不能像h:selectManyCheckbox组件一样以数组的形式表示,
所以在进行多附件上传的时候,通常情况下,页面都会加入N个inputFileUpload组件,但是此时inputFileUpload组件的数量是固定的,不能达到动态表单的效果。
难道,就没有一种方法使jsf的动态上传表单达到更完美一些吗?
或许其它JSF实现可以吧。但是,本人在寻找更简捷的方式。
仔细研究源代码发现,inputFileUpload的原理是,通过过滤器,如果表单的enctype属性是multipart/form-data,就创建一个MultipartRequestWrapper类。这个类继承于HttpServletRequestWrapper。
MultipartRequestWrapper从request中分离出来文件,然后把相关文件信息存放到一个MAP里,把普通文本字段信息存在通过addTextParameter方法,另一个MAP里。(这里补充一句,request.getParameter方法实际上就是从一个MAP中取值)
最后MultipartRequestWrapper会在过滤器重写request对象,继续向下传递,当JSF实现获取request时,就可以通对requset对managed-bean进行设置请求值并且处理事件了。
其实最后,已经无须用inputFileUpload组件上传文件并且绑定到UploadedFile类型的对象了。
我们只需要从request中取出存放文件的MAP回来自行处理就可以了,这样,表单上,只要是html的<input type="file" id="xxx" name="xxx" />这样普通的标签就可以了,既然标签都是普通的html了,那么我们用javascript控制增加减少多少个上传文件数量都已经是无所谓的事情了,呵呵。
至此,已经达到动态表单多附件上传的目的了!
至于相关代码,下班了,不多说了,我就不帖出来了,有需要的朋友可以私下里找我。
分享到:
相关推荐
支持vue3的动态表单组件 // main,js // 引入 vue-ele-form import EleForm from './velFrom' // 挂载 use(EleForm)
ASP无组件上传(支持多文件+表单数据)
一款基于JavaScript实现的多附件上传表单添加类库源码及例子程序
基于Vue和Element UI的动态表单组件设计源码,该项目包含217个文件,主要文件类型有95个Vue前端文件,78个JavaScript文件,10个json配置文件,6个gif动画文件,5个Markdown文档,5个HTML页面文件,4个CSS样式文件,3...
Asp无组件上传,表单值和文件可以分别保存到数据库和文件夹
plexus-form - 采用JSON-Schema的react动态表单组件
基于vue+Iview实现动态表单组件,通过拖拽组件到面板即可实现一个表单。支持各个组件的动态隐藏显示,动态表格弹窗式维护。
我上传的是一个留言板的实例,数据库连接为conn.asp;表单处理为submit.asp;外用类upload_5xsoft.inc处理图片上传; upload_5xsoft.inc 这个类集成了图片上传功能,同时可以限制上传类型; 最重要的是还可以...
另外就是一些具体实现的逻辑,主要实现靠的是lFile这个组件。代码可在H5,app,小程序中使用和展示。 适合人群:具备一定编程基础,有些许uniapp开发经验的编程人员即可。 使用场景及目标:使用uniapp开发,且有文件...
在许多Web站点应用中都需要为用户提供通过浏览器上传文档资料的功能,例如,上传邮件附件、个人相片、共享资料等。对文件上传功能,在浏览器端提供了较好的支持,只要将FORM表单的enctype属性设置为“multipart/form...
详细讲解Struts1控制器组件和动态表单问题
纯Javascript打造的ASP上传组件,支持多文件上传、进度条、数据库存放和文件系统存放 相关说明: 有组件上传方式请右键"FyUpload.sct"注册,然后可以使用: Server.CreateObject("Rimifon.Upload") 创建对象。...
本程序采用 化境无组件上传作是蓝本修改 原化境无组件上传类在不支持FSO组件的虚拟主机中或因安全原因禁止FSO组件的服务器上都无法使用 经海豹修改后,本上传类可以在不支持 FSO组件的虚拟主机中运行。 作者: 化...
JAVA动态表单设计,自定义表单,自定义数据,在线设计,数据库存储
动态表单,VUE动态表单。基于vue+element ui实现动态表单组件,通过拖拽组件到面板即可实现一个表单。支持各个组件的动态隐藏显示,动态表格弹窗式维护。致力打造开源最强vue动态表单组件,持续维护
antd+vue实现动态验证循环属性表单的思路 希望实现查询表单的某些属性可以循环验证必填项: 需求: 1.名称,对比项,备注必填,默认为一行,可增加多行 2.根据名称,动态请求对比项列表,名称变化时,清空该行...
在一个form表单里同时上传多个文件和文本信息的解决方案
react hook antd二次封装form表单,支持单选、多线、下拉框、定制表单项,性能优越,希望对您有所帮助