2012-05-11 13 views
2

Struts2アプリケーションでfileuploadプロセスを実行しています。私がfilenameとcontenttypeを動作クラスに表示すると、nullポインタの例外が表示されます。Struts2のFileuploadプロセスでのヌルポインタ例外

私はjarファイルを含み、次のコードを使用しています。 Upload.jsp Actionクラスで

<s:form action="saveBulkStores.action" method="POST" enctype="multipart/form-data"> 
    <s:actionmessage name="message"/> 
    <s:label value="File Name : *" /> 
    <s:file name="upload" label="File" size="40"/> 
    <br> 
    <br> 
    <s:submit name="ADD" value="UPLOAD"/> 
    <input type="button" onClick="cancelFunction()" name="Cancel" value="Cancel" tabindex="10"> 
</s:form> 
struts.xmlで

<action name="saveBulkStores" class="com.rewardz.action.FilesUploadAction" method="saveBulkStores"> 
    <interceptor-ref name="fileUpload"> 
     <param name="maximumSize">52428800</param> 
    </interceptor-ref> 
    <interceptor-ref name="basicStack"/> 
    <result name="input">/uploadfile.jsp</result> 
    <result name="viewFile">/viewfile.jsp</result> 
    <result name="Reload">/uploadfile.jsp</result> 
</action> 

:SERVER.LOGで

private File file; 
private String contentType; 
private String filename; 


public void setUpload(File file) { 
    this.file = file; 
} 

public void setUploadContentType(String contentType) { 
    this.contentType = contentType; 
} 

public void setUploadFileName(String filename) { 
    this.filename = filename; 
} 

public String saveBulkStores() throws IOException{ 
    System.out.println("check Bulk upload file"); 
    String filePath = request.getRealPath("/"); 
    System.out.println("Server path:" + filePath); 

    System.out.println("UPLOADFILECONTENT TYPE:"+contentType); 
    System.out.println("UPLOADFILENAME:"+filename); 
    System.out.println("UPLOADFILE:"+file); 

    System.out.println("**********************************"); 


    value = "viewFile"; 

    System.out.println("Forward Value:"+value); 
    return value; 
} 

出力:(GlassFishのサーバーの使用)

check Bulk upload file 
C:\glassfish3_installer\glassfish\domains\domain1\applications\My_Application\ 
UPLOADFILECONTENT TYPE:null 
UPLOADFILENAME:null 
UPLOADFILE:null 

誰かがStruts2のアップロードプロセスでファイルパス、ファイルパスを取得するのを手伝ってください。

+1

を解決しますので、あなたの代わりに、アップロードのファイルを使用して、プロパティファイルのファイルがある

<s:file name="upload" label="File" size="40" /> 

..私は好きではないことを教えてくれるでしょう:私はカスタムスタックを使用するのが気に入らず、defaultStack(これは既にfileUploadを使用しています)を使用して戻り、struts形式でsaveBulkStoresを書くことができます(.action postfixはありませんが、それは簡単なことであり、実際には何の問題もありません)。 – Quaternion

+0

もしあなたがそれを理解しなければ、struts2の慣習のプラグインを使って完全な実例を投稿することができました。 – Quaternion

+0

私も同じ問題がありました。しかし 'struts.xml'のように' basicStack'が 'fileUpload'の後に含まれると解決されます。 –

答えて

0

こんにちはシヴァは、あなたがアクションクラスで使用しているタグに問題があります。私は問題を見ることができない、アップロードプロパティは、あなたのアクションクラスに存在していないことが問題

<s:file id="file" name="file" /> 
+2

私はそれが正しいとは思わない。それはプロパティ名を決定するゲッターとセッターで、OPのコードでは 'uploadXxx'という名前です。また、 'id'属性は不要です。あなたの "訂正"は、フォームフィールドも無効にします。 –