问题描述:我想使用JSP创建一个文件上传屏幕。屏幕将允许用户在屏幕上选择多个文件,但所有文件都只有一个上传按钮。单击上传按钮后,应在 Action 类中获取所有文件对象。
但重要的是页面在提交后不应该被刷新。在文件上传过程中,将在同一屏幕上显示其他不应更改的信息。
我的尝试:我使用了简单的 struts2 文件上传功能,效果很好。但它正在刷新提交页面。我使用 AJAX (JQuery) 来解决这个问题。AJAX 面临的问题是它没有将 File 对象设置为 Action 类的文件属性。因此,我无法在 Action 类中获取文件对象并进一步处理。
谁能帮我解决这个问题。
我附上了迄今为止我尝试过的任何代码。
JSP:
<s:form action="fileUpload" method="post" enctype="multipart/form-data" >
<s:file id="file" name="userImage" cssClass="fileUpload" cssStyle="fileUpload" />
<button id="px-submit">Upload</button>
</s:form>
<script type="text/javascript">
jQuery(function($){
$('.fileUpload').fileUploader();
});
</script>
JQuery 插件: 这是我用过的 jquery 插件。
动作类:
public class FileUploadAction extends ActionSupport{
private File userImage;
public File getUserImage() {
return userImage;
}
public void setUserImage(File userImage) {
this.userImage = userImage;
}
public String execute()
{
try
{
System.out.println("file name: " + userImage.toString());
}
catch(Exception e)
{
e.printStackTrace();
}
return SUCCESS;
}
编辑:这是我的 struts 配置文件。
Struts.xml
<action name="commonDataImportAction_*" class="xxx.Action">
<result name="SUCCESS" type="stream">
<param name="contentType">text/html</param>
<param name="inputName">inputStream</param>
</result>
我在这里得到一个空指针,因为文件对象没有被设置。
请帮忙。
提前致谢。高拉夫