文件上传下载时,在form表单中设置属性enctype=“multipart/form-data”的情况下,如何获取表单提交的值?

来源:互联网 发布:电陶炉和电磁炉 知乎 编辑:程序博客网 时间:2024/05/19 21:58

一、问题描述

文件上传下载时,在form表单中设置属性enctype=“multipart/form-data”的情况下,如何获取表单提交的有关用户信息的值?(比如:textfield、radio等属性中的值)

二、解决方法

1、情况一:没有对user对象进行封装
方法:可在form表单对应的action(xxx.java)中定义相应的属性,实现对应的set和get方法,然后在显示页面中使用<s:property value="name"/>语句即可获得表单中的值。
例:
uploadFile.jsp:页面中定义了textfield属性<s:textfield name="name" label="姓名" size="20"/>,在对应的action中定义相应的属性

<s:form action="docUpload" method="post" enctype="multipart/form-data">    <s:textfield name="name" label="姓名" size="20"/>    <s:file name="upload" label="选择文档" size="20"/>    <s:file name="upload" label="选择文档" size="20"/>    <s:submit value="确认上传" align="center"/></s:form>

DocUploadAction.java:对应上面form表单的action,定义了name属性

public class DocUploadAction extends ActionSupport {    private String name;    private File[] upload;    private String[] uploadContentType;    private String[] uploadFileName;    private String savePath;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    ....    ....省略其他代码

showFil.jsp:使用<s:property value="name"/>语句即可获得值

<td align="center"><s:property value="name"/></td>

2、情况二:为了实现更好的封装,可将用户信息封装到User对象中。
方法:可在form表单中的name值均采用“user.属性名”,对应的action(xxx.java)中定义user对象,实现对应的set和get方法,然后在显示页面中使用<s:property value="user.name"/>语句即可获得表单中的值。
例:
uploadFile.jsp:<s:textfield name="user.name" label="姓名" size="20"/>注:name的值都要用user对象.属性名

<s:form action="user" method="post" enctype="multipart/form-data">    <s:textfield name="user.name" label="姓名" size="20"/>    <s:file name="upload" label="照片" size="20"/>    <s:textfield name="user.age" label="年龄" size="20"/>    <s:radio list="#{'1':'','2':'' }" name="user.sex" value="1" label="性别" cssStyle="border:0px;"/>    <s:textfield name="user.address" label="籍贯" size="20"/>    <s:submit value="确定录入" align="center"/></s:form>

DocUploadAction.java:创建User对象,并实现set和get方法

public class UserAction extends ActionSupport {    private static final int BUFFER_SIZE=40*40;    private File upload;               //封装上传文件域的属性    private String uploadContentType;  //封装上传文件的类型    private String uploadFileName;     //封装上传文件名    private String savePath;          //封装上传文件的保存路径    private User user;                //创建user对象    public User getUser() {        return user;    }    public void setUser(User user) {        this.user = user;    }

showFil.jsp:使用<s:property value="user.name"/>语句即可获得值

<td align="center"><s:property value="user.name"/></td>

转载请注明!谢谢!

0 0
原创粉丝点击