表单enctype不对导致action中无法接受数据
描述:在用ssh开发项目的时候,可能会遇到一个问题,
那就是明明我的表单字段和JavaBean类中的字段都是一一对应的,而且action也实现了模型驱动,但为什么action的方法中还是得不到表单数据呢?
最有可能的原因是:你的表单有上传文件,但表单的enctype不对!
当你在表单中有上传文件的行为的时候,注意,一定要加上enctype="multipart/form-data"
<form class="am-form tpl-form-border-form" action="<c:url value='/user_regist.action'/>" enctype="multipart/form-data" method="post"> </form>
一旦这样,在action中,你要通过下面的这种方式来获取request中的数据:
HttpServletRequest request = ServletActionContext.getRequest(); // HttpServletResponse response = ServletActionContext.getResponse(); DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload sfu = new ServletFileUpload(factory); sfu.setFileSizeMax(2048 * 2048); List<FileItem> fileItemList = sfu.parseRequest(request);
所以说,当你接收不到数据的时候,要往这方面想一想,看一看enctype有没有写。