檔案上傳下載時,在form表單中設定屬性enctype=“multipart/form-data”的情況下,如何獲取表單提交的值?
一、問題描述
檔案上傳下載時,在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"/>
<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>
轉載請註明!謝謝!