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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012829611/article/details/70072569

一、问题描述

文件上传下载时,在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>

转载请注明!谢谢!

猜你喜欢

转载自blog.csdn.net/u012829611/article/details/70072569