一、问题描述
文件上传下载时,在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>
转载请注明!谢谢!