2013-04-03 54 views
1

我遇到問題,我需要幫助。 我正在Eclipse中使用Struts 1.3.10,我正在開發一個Web應用程序,我正在使用JSP,當然,我正在實現一個JSP來上傳文件,但卻給我帶來了問題。我有下一個代碼和配置。上載File Struts中的java.lang.NullPointerException

<body> 
    <html:form action="upload" method="post" enctype="multipart/form-data"> 
     <input type="file" name="fichier" /> 
     <tr> 
      <td><html:submit property="submit" value="Submit"/></td> 
      <td align="left"><html:reset/></td> 
     </tr> 
    </html:form> 
</body> 

表單bean我

public class uploadForm extends ActionForm { 
protected FormFile fichier; 
public FormFile getFichier() 
    { 
     return fichier; 
    } 

    public void setFile(FormFile fichier) 
    { 
     this.fichier = fichier;}} 

在行動我有

public class uploadAction extends Action { 
public ActionForward execute(ActionMapping mapping, ActionForm form, 
     HttpServletRequest req, 
     HttpServletResponse res) throws Exception { 

     String resultat = null; 
     FormFile fichier = ((uploadForm) form).getFichier(); 
     String fileName = fichier.getFileName(); 
     System.out.println(fileName); 
     return mapping.findForward(resultat); 
    } 
} 

在的struts-config我

<form-beans type="org.apache.struts.action.ActionFormBean"> 
    <form-bean name="uploadForm" type="struts.ActionForm.uploadForm" /> 
</form-beans><action-mappings type="org.apache.struts.action.ActionMapping"> 

    <action path="/fiche" input="/FormulaireFiche.jsp" scope="request" 
    name="FicheRenseignementForm" type="struts.action.FicheRenseignementAction"> 
     <forward name="succes" path="/personnel_succes.jsp" redirect="false" /> 
     <forward name="echec" path="/FormulaireFiche.jsp" redirect="false" /> 
    </action></action-mappings> 

當我運行應用程序,我選擇文件,ser版本給我異常

javax.servlet.ServletException: java.lang.NullPointerException 
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286) 
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) 
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 

原因僅僅

java.lang.NullPointerException 
struts.action.uploadAction.execute(uploadAction.java:21) 
org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58) 
org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67) 
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51) 
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190) 
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304) 
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190) 
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283) 
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) 
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
+0

請發佈*完整*堆棧跟蹤(與原因)。它應該有助於識別問題 – AlexR

+0

謝謝你的回答,我添加原因 – toutou

+0

上傳行爲的第21行是什麼?不要挑剔(好吧,也許我是...),你不遵循標準的Java命名約定。類名應該以大寫字母開頭。 – NilsH

回答

0

您有幾個問題在這裏:

1)你必須綁定到你的FormFile對象(物業HTML表單)就像即:

<html:file property="fichier"/>

2)你的二傳手有INCOR矩形名稱 - 它將無法在表單對象中設置值。它必須解決這些事情的bug並不需要<html:submit />

開始setFichier(FormFile fichier)

3)property="submit"

0

html:form標籤中的action屬性值應該等於struts-config.xmlaction-mapping標籤中使用的值。在動作屬性中使用/upload/fiche。可以使用<html:submit value="Submit"/>。由於UploadForm沒有「提交」屬性,因此如果您在html:submit標記中包含屬性屬性,則會出現錯誤。

將訪問修飾符FormFile fichier;更改爲public,以便Action類獲取表單對象的引用。並將方法setFile更改爲setFichier

resultat的值爲空。指定一個前向名稱,如succes

的名稱和輸入屬性的動作標籤的值也應該從FicheRenseignementForm改爲UploadForm

0

重命名setFile方法給設定器setFichier。當NPE提交時,Struts無法設置該字段。

相關問題