問題の説明:JSPを使用してファイルアップロード画面を作成したい。この画面では、ユーザーは画面上の複数のファイルを選択できますが、すべてのファイルに対して1つのアップロードボタンしかありません。アップロードボタンをクリックすると、すべてのファイルオブジェクトがActionクラスで取得されます。
ただし、重要なことは、送信後にページが更新されないようにすることです。同じ画面に表示される他の情報がありますが、ファイルのアップロード中に変更されるべきではありません。
私の試み:私はうまく機能する単純なstruts2ファイルアップロード機能を使用しました。しかし、それは提出時にページを更新しています。これを解決するためにAJAX(JQuery)を使用しました。私がAJAXで直面している問題は、FileオブジェクトをActionクラスのfileプロパティに設定していないことです。したがって、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>
ファイルオブジェクトが設定されていないため、ここでnullpointerを取得します。
助けてください。
前もって感謝します。Gaurav