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

本文介绍在使用multipart/form-data进行文件上传的同时,如何通过Struts2框架正确获取表单中的用户信息,包括直接获取及封装到User对象两种方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、问题描述

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

转载请注明!谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值